InputStream用于读取字节流,OutputStream用于写入字节流,二者是Java中处理二进制数据的核心抽象类,常通过FileInputStream和FileOutputStream实现文件读写,结合缓冲数组和try-with-resources可高效完成文件复制、备份等操作。

在Java中,InputStream 和 OutputStream 是处理字节流的两个核心抽象类,常用于文件的读写操作。它们位于 java.io 包中,适用于处理任意类型的二进制数据,比如图片、音频、视频或普通文本文件。
理解InputStream与OutputStream的基本作用
InputStream 用于从数据源(如文件)读取字节数据,而 OutputStream 则负责将字节数据写入目标位置。这两个类都是抽象类,实际使用时通常会用到它们的子类,如 FileInputStream 和 FileOutputStream。
常见应用场景包括:
复制文件内容 读取图片或音频文件 实现简单的文件备份功能
使用FileInputStream读取文件内容
通过 FileInputStream 可以逐字节或批量读取文件中的数据。推荐使用缓冲数组提高效率。
立即学习“Java免费学习笔记(深入)”;
示例代码:读取一个文本或二进制文件
import java.io.FileInputStream;import java.io.IOException;public class ReadFile { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("data.txt")) { int data; while ((data = fis.read()) != -1) { // 读取单个字节 System.out.print((char) data); } } catch (IOException e) { System.err.println("读取文件出错:" + e.getMessage()); } }}
更高效的方式是使用字节数组缓冲:
byte[] buffer = new byte[1024];int length;while ((length = fis.read(buffer)) != -1) { System.out.write(buffer, 0, length);}
使用FileOutputStream写入文件内容
FileOutputStream 允许将字节数据写入文件。如果文件不存在会自动创建;若已存在,默认会覆盖内容,可通过构造函数参数设置为追加模式。
灵云AI开放平台
灵云AI开放平台
150 查看详情
示例代码:写入字符串到文件
import java.io.FileOutputStream;import java.io.IOException;public class WriteFile { public static void main(String[] args) { String content = "Hello, Java IO!"; try (FileOutputStream fos = new FileOutputStream("output.txt")) { fos.write(content.getBytes()); // 将字符串转为字节数组写入 } catch (IOException e) { System.err.println("写入文件失败:" + e.getMessage()); } }}
若想追加内容而不是覆盖,使用带布尔参数的构造函数:
new FileOutputStream("output.txt", true)
结合InputStream和OutputStream实现文件复制
这是IO流的经典应用。通过读取源文件并写入目标文件,完成复制操作。
示例:复制图片文件
import java.io.*;public class CopyFile { public static void copy(String src, String dest) throws IOException { try (InputStream is = new FileInputStream(src); OutputStream os = new FileOutputStream(dest)) { byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) != -1) { os.write(buffer, 0, length); } } } public static void main(String[] args) { try { copy("photo.jpg", "copy_photo.jpg"); System.out.println("文件复制完成!"); } catch (IOException e) { System.err.println("复制失败:" + e.getMessage()); } }}
注意:使用 try-with-resources 语句可自动关闭流,避免资源泄漏。
基本上就这些。掌握 InputStream 和 OutputStream 的基本用法后,就能处理大多数文件读写需求。关键在于正确使用缓冲提升性能,并确保流被及时关闭。对于文本数据,后续可以学习 Reader 和 Writer 字符流来更方便地处理编码问题。
以上就是在Java中如何使用InputStream与OutputStream进行文件读写_IO流操作技巧的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/765770.html
微信扫一扫
支付宝扫一扫