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!
4 年多之前 回复
hety163
hety163   2014.01.10 17:17

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

u012754805
u012754805   2014.04.19 21:58

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java测试字节流和字符流,以及带缓存的字符流读取速度对比
测试用的文件为txt格式文件,大小为2.12MBpackage IO;import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; /** * 我创建
字节流与字符流的区别
1. 输入流 InputStream类是字节输入流的抽象类,是所有字节输入流的父类。InputStream类的具体层次结构如下图所示。 该类中所有方法遇到错误时都会引发IOException异常。下面是该类中一些常用方法的简要说明。 read()方法:从输入流中读取数据的下一个字节。返回0到255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值-1。
java字节流和字符流
java字节流和字符流java字节流和字符流java字节流和字符流
字节流与字符流的区别&&用字节流好还是用字符流好?
字节流: (A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据。 (B)FileOutputStream(FileDescriptor) 创建一个文件输出流,向指定的文件描述器输出数据。 (C)FileOutputStream(String name) 创建一个文件输出流,向指定名称的文件输出数据。
Java 字节流 字符流 转换流
我们知道Java中的流分为字符流和字节流,其中字符流主要针对字符文本进行处理,而字节流处理范围更为广泛,毕竟图片、电影等只要是文件都是以二进制的形式存在的,而不是字符。 字符流: FileReader FileWriter。 BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream
字符流和字节流的区别,使用场景,相关类
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWr
字节流和字符流的区别,以及对象的使用。
1.首先先区分一下字符和字节 a.字节就是计算机存储信息的基本单位,01010101011101 b.字符是指一个符号占多少个字节,比如一个汉字占两个字节,一个英文标点占一个字节................ 2.再者java中流的概念 其实就是一个抽象的概念,把数据的流动比作是流动的水,其实就是数据的输入和输出而已就好比水库的进水和出水。流按照分类可以分为字节流和字符流(或者输入流和输
Java字节流与字符流的区别详解
字节流与字符流 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。 字节流与字符流 在Java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输
字节流和字符流的相互转换
/*  * 读取键盘输入  * read()是一个阻塞式方法  * system.in是标准输入默认设备是键盘  * system.out是标准是输出默认设备是控制台  * \r 对应ASC码的数字是13  * \n 对应ASC码的数字是10  * 在
Java中字符流和字节流到底有什么区别!!!
stream结尾都是字节流,reader和writer结尾都是字符流 两者的区别就是读写的时候一个是按字节读写,一个是按字符。 实际使用通常差不多。 在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。 只是读写文件,和文件内容无关的,一般选择字节流。