IO流分类:
A:流向
输入流 读取数据
输出流 写出数据
B:数据类型
字节流
字节输入流
字节输出流
字符流
字符输入流
字符输出流
注意:
a:如果我们没有明确说明按照什么分,默认按照数据类型分。
b:除非文件用windows自带的记事本打开我们能够读懂,才采用字符流,否则建议使用字节流。
构造
FileOutputStream写出数据
FileOutputStream fos = new FileOutputStream("f.txt")
fos.write(“Hello”.getBytes());//注意的是write里面的是字节数组
fos.close//这步必须要,释放资源,就可以被系统自动回收
接下来关于写入数据,使用write方法写入每次写入的数据是重新写入,有时候我们需要的就是追加写入,此时可以这样使用,FileOutputStream fos = new FileOutputStream("f.txt",true)
FileInputStream读取数据
FileInputStream fis = new FileInputStream("fos.txt");
//方式1 这样的方式就不能识别中文
int by = 0;
while((by=fis.read())!=-1) {
System.out.print((char)by);
}
//方式2 这个方式是比上一个方式高效的,因为它是一次读取多个数据在缓冲区内
byte[] bys = new byte[1024];
int len = 0;
while((len=fis.read(bys))!=-1) {
System.out.print(new String(bys,0,len));
}
有了上两种方式的对比,我们可以看出有缓冲区的输入输出更加的高效,所以在java中有一种自带的缓冲区的字节类。
FileOutputStream fos = new FileOutputStream("f.txt");
BufferedOutputStream fos = new BufferOutputStream(fos);
两者可以综合
BufferedOutputStream fos = new BufferOutputStream(new FileOutputStream("f.txt"));
其他使用的方法都是一样的