首先了解上面是流:流,即输入/输出流。

它可以方便的实现数据的输入、输出操作

分类:

字节流和字符流,输入流和输出流,节点流和处理流

 

 

 字节流:字节流是程序中最常用的流。

InputStream被看成一个输入管道,OutputStream被看成一个输出管道,数据通过InputStream从源设备输入到程序,通过OutputStream从程序输出到目标设备,从而实现数据的传输。

字节流读写文件

FileInputStreamFileOutputStreamFileInputStreamInputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据。从文件读取数据是重复的操作

我们来写一个测试案例:

    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();
}
}

 

 

 

从比较运行结果可以看出拷贝文件所消耗的时间明显减少了很多,这说明使用缓冲区读写文件可以有效的提高程序的传输效率

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-06-12 19:42  一位程序袁  阅读(179)  评论(0编辑  收藏  举报