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

Java的io流使用

2017-01-14 16:54 211 查看

File类

File类是java.io包下代表与平台无关的文件和目录。如果希望在程序中操作文件和目录,都可以通过File类来完成。

注意:File能新建、删除、重命名文件和目录但是不能访问文件内容本身,要访问文件本身时就要使用I/O流(输入/输出流)

Java的IO流

输入流:

只能从中读取数据,而不能向其中写入数据

输出流:

只能向其写入输出,而不能从中读取数据。

注意:此处的输入输出是从程序的内存角度考虑的。

字节流和字符流

字节流和字符流用法几乎完全一样,区别在于字节流和字符流操作的单元不同,字节流操作的是字节,字符流操作的是字符。

流的概念模型

如果把Java里的数据抽象为流模型,那么把输入输出设备当做水管,输入流就是从水管里抽水滴,水滴的单位分别为字符和字节。输出流就是向水管里输入水滴,单位为字符和字节。

InputStream和Reader

InputStream和Reader都是输入流的抽象基类。InputStream单位是字符,Reader单位是字符。

以下是使用实例:

InputStream

FileInputStream file=new FileInputStream("test.txt");//创建字节输入流
byte []bbuf=new byte[32];//一次取多少滴“水”
int hasread=0;//用于实际读取的字节数
while((hasread=file.read(bbuf)>0)){
System.out.print(new String(bbuf,0,hasread))//将字节数组转化为字符串输入
file.close();
}


Reader

FileReader file=new FileReader("test.txt");//创建字节输入流
char []bbuf=new char[32];//一次取多少滴“水”
int hasread=0;//用于实际读取的字符数
while((hasread=file.read(bbuf)>0)){
System.out.print(new String(bbuf,0,hasread))//将字节数组转化为字符串输入
file.close();


两者的用法几乎完全一样,只是单位不同。但是这里有一个问题。char在Java中占两个字节,可以表示任意字符,但是byte只占一个字节,所以如果一次只读取一个或者一次读取的位数不是二的倍数就会出现乱码现象所以在读取纯文本文档的时候用Reader在读取其他文件时则使用计算机能够识别的字节使用InputStream
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: