Java的io流使用

2017-01-14 19:45:49来源:CSDN作者:liu1324457514人点击

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吧

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台