2 a842510689 a842510689 于 2014.01.09 23:24 提问

字符流 比 字节流 效率高?

java老师说操作文件的时候,如果文件是文本的就用 字符流,因为 字符流 操作文本效率高。 可是 字符流 也是基于 字节流 实现的呀! 我也做过试验,copy一个文本文件,结果是字节流的速度快.... 而且 字节流 读取速度快慢取决于每次读取的字节数组大小,这样说来 字符流 完全没优势呀!
小弟java新手,问题可能有点浅薄,忘各路大虾百忙中解答下下,谢谢。

3个回答

tanqiujun
tanqiujun   2014.01.10 01:12

package io;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.Calendar;
public class io4 {
public static void main(String[] args) throws IOException {
Calendar start,end;
start=Calendar.getInstance();
FileInputStream fis = new FileInputStream("c:\a.java");
char ch;
int j = fis.available();
for (int i = 0; i < j; i++) {
ch = (char) fis.read();
}
fis.close();
end=Calendar.getInstance();
System.out.println(end.getTimeInMillis()-start.getTimeInMillis());
start=Calendar.getInstance();
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("c:\a.java"));
char ch2;
int j2 = bis.available();
for (int i = 0; i < j2; i++) {
ch2 = (char) bis.read();
}
bis.close();
end=Calendar.getInstance();
System.out.println(end.getTimeInMillis()-start.getTimeInMillis());
}
}

用这个测试一下

a842510689
a842510689 哥们儿,你测的是FileInputStream和BufferedInputStream!
3 年多之前 回复
hety163
hety163   2014.01.10 17:17

一般来说文本文件是字符流较快,字节流适合用于非文本文件

u012754805
u012754805   2014.04.19 21:58

所有流的地层都是字节实现的,但是对于字符的文本信息,那肯定是字符流,快些,因为加入还是字节读取的话,中间还的用InputSteamReader或者OutputStreamWriter转换

Csdn user default icon
上传中...
上传图片
插入图片