流
流
首先了解上面是流:流,即输入/输出流。
它可以方便的实现数据的输入、输出操作
分类:
字节流和字符流,输入流和输出流,节点流和处理流
字节流:字节流是程序中最常用的流。
InputStream被看成一个输入管道,OutputStream被看成一个输出管道,数据通过InputStream从源设备输入到程序,通过OutputStream从程序输出到目标设备,从而实现数据的传输。
字节流读写文件
FileInputStream和FileOutputStream。FileInputStream是InputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据。从文件读取数据是重复的操作
我们来写一个测试案例:
public static void main(String[] args) throws IOException {
FileInputStream stream = new FileInputStream("F:/cc.txt");
int i ;
while ((i=stream.read())!=-1){
System.out.println((char)i);
}
stream.close();
}
}
结果:
刚才我们写了输出的操作,那么我们在来写一下输入操作
public static void main(String[] args) throws IOException {
FileOutputStream stream = new FileOutputStream("F:/a.txt");
stream.write("你好".getBytes());
stream.close();
}
}
结果:
既然我们会读写操作,那么我们来做一个文件拷贝
public static void main(String[] args) throws IOException {
FileInputStream stream = new FileInputStream("F:/a.txt");
FileOutputStream fileOutputStream = new FileOutputStream("F:/c.txt");
int i;
while ((i=stream.read())!=-1){
fileOutputStream.write(i);
}
fileOutputStream.close();
stream.close();
}
}
使用我们读取操作,我们来看结果:
字节流的缓冲区
我们在来看一些缓冲区 :首先什么缓存呢
缓冲区:内存空间的一部分
在文件拷贝过程中,通过以字节形式逐个拷贝,效率也非常低,可以定义一个字节数组缓冲区,在拷贝文件时,就可以一次性读取多个字节的数据
我们来写一个案例:
public static void main(String[] args) throws IOException {
FileInputStream stream = new FileInputStream("F:a.txt");
FileOutputStream stream1 = new FileOutputStream("F:cc.txt");
int i;
while ((i=stream.read())!=-1){
stream1.write(i);
}
stream.close();
stream1.close();
}
}
从比较运行结果可以看出拷贝文件所消耗的时间明显减少了很多,这说明使用缓冲区读写文件可以有效的提高程序的传输效率