IT十八掌作业_java基础第十三天_IO

1.阐述BufferedReader和BufferedWriter的工作原理,

  是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?

不一定,

bufferedreader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取;

bufferedwriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入;

缓冲区读写器的性能恒大于非缓冲区读写器的性能。



2.阐述HashSet与HashMap的异同。

Hashset:Hashset集合内部是通过HashMap进行实现的。使用的是HashMap中key部分。实现set接口,set继承collection接口

HashMap:实现Map接口,Map接口与Collection接口是同级的。

它们都具有不重复的特点,采用hash机制进行存储。

HashMap存储的是key - value , HashSet内部是通过HashMap进行的,只不过vlaue 部分传输的是一个垃圾值.


3.Charset类操作:isSupport()

3.1)通过该类验证平台是否支持一下字符集:

gb2312

GB2312

gbk

GBK

utf-8

utf8

iso8859-1

iso-8859-1


for (String charset: Charset.availableCharsets().keySet()){

System.out.println(charset);


}



3.2)取出平台默认的字符集


System.out.println(Charset.defaultCharset().name());


4.FileReader.getEncoding();




5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream

  实现大文件复制,比较复制效率。


package com.it18zhang.iodemo;


import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;


public class IoDemo {


public static void main(String[] args) {

String src = "D:/HPBladeSystemOnboardAdministrator用户指南.pdf";

String desc = "d:/copyAsset.pdf";

FileCopybyInputStrem(src,desc);

try {

FileCopyByBuffered(src,desc);

} catch (Exception e) {

e.printStackTrace();

}

}


public static void FileCopybyInputStrem(String src,String desc) {

FileInputStream fis = null;

FileOutputStream fos = null;

try {

fis = new FileInputStream(src);

fos = new FileOutputStream(desc);

int len = 0;

while ((len = fis.read()) != -1){

fos.write(len);

fos.flush();

}

System.out.println("Over");


} catch (Exception e) {

e.printStackTrace();

} finally {


try {

fis.close();

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}


}


public static void FileCopyByBuffered(String src,String desc) throws Exception {

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));

byte[] buf = new byte[1024 * 4];

int len = 0;

while((len = bis.read(buf)) != -1){

bos.write(buf, 0, len);

bos.flush();

}

bos.close();

bis.close();

System.out.println("Over");

}

}


6.阐述对象回收的前提条件。

对象回收是在没有任何指针指向该堆空间的时候回收,这个过程不是实时的。


你可能感兴趣的:(java,基础,第十三天)