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.闡述對象回收的前提條件。

對象回收是在沒有任何指針指向該堆空間的時候回收,這個過程不是實時的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章