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

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

分类:

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

 

 

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

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 @   一位程序袁  阅读(188)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示