您的位置:首页 > 编程语言 > Java开发

Java基础复习:字符流

2013-05-27 10:09 218 查看
Java中的字符是Unicode编码,是双字节的,即一个字符等于两个字节。

字符流的好处是可以更加便捷的操作文本文件。

(抽象流)字符输出流:Writer 字符输入流:Reader

package day20.charstream;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Demo1 {
public static void main(String[] args) {
File file = new File("d:/Test/hi.txt");
read(file);//读出的数据中文乱码
}

/**
* 读出指定的文件并在屏幕打印出来,并使用自动关闭资源
* @param file
*/
public static void read(File file){

try (
Reader r = new FileReader(file);
){
char[] buff = new char[1024];
int len = 0;
while((len = r.read(buff))!=-1){
String data = new String(buff,0,len);
System.out.println(data);
}

} catch(IOException e) {
e.printStackTrace();
}
}
}


字节流和字符流的区别:

1)在使用字符流操作的时候会使用到缓冲区,而字节流操作的时候是不会使用到缓冲区的

2)在输出的时候,OutputStream类即使最后没有关闭内容也可以输出。但是如果是Writer的话,则如果不关闭,最后一条内容是无法输出的,因为所有的内容都是保存在了缓冲区之中,每当调用了close()方法就意味着清空缓冲区了。那么可以证明字符流确实使用了缓冲区:

字节流:程序 → 文件

字符流:程序 → 缓冲区 → 文件

3)两者相比,肯定使用字节流更加的方便,而且在程序中像图片、MP3等都是采用字节的方式的保存,那么肯定字节流会比字符流使用的更广泛。

但是需要说明的是,如果要是想操作中文的话,字符流肯定是最好使的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: