### Java中的字节流 #### 一、字节流简介 在Java中,字节流是一种处理二进制数据的基本方式。它通过一系列类来实现数据的读取和写入功能,这些类主要继承自`InputStream`和`OutputStream`两个抽象类。字节流非常适合处理非文本文件(如图片、音频等)以及需要跨平台兼容性的文件。 #### 二、InputStream与OutputStream **1. InputStream** - **基本介绍**:`InputStream`是一个抽象类,它定义了所有输入流必须支持的一些基本方法,如`read()`等。 - **read()方法**: - `public int read() throws IOException`:从流中读取一个字节。如果已经到达流的末尾,则返回-1。 - `public int read(byte[] b) throws IOException`:从流中读取一系列字节到byte数组`b`中。返回实际读取的字节数,如果流已结束则返回-1。 - `public void read(byte[] b, int off, int len) throws IOException`:从流中读取`len`个字节到数组`b`中,从索引`off`处开始存放。 - **其他常用方法**: - `public int available() throws IOException`:返回当前流中可以读取的字节数。 - `public long skip(long n) throws IOException`:跳过并丢弃输入流中的`n`个字节。返回实际跳过的字节数。 - `public abstract void close() throws IOException`:关闭此输入流并释放与此流相关的所有资源。 **2. OutputStream** - **基本介绍**:`OutputStream`也是一个抽象类,用于定义输出流的行为。 - **write()方法**: - `public void write(int i) throws IOException`:将指定的字节写入此输出流。 - `public void write(byte[] b) throws IOException`:将`b.length`个字节从指定的byte数组写入此输出流。 - `public void write(byte[] b, int off, int len) throws IOException`:将`len`个字节从指定的byte数组写入此输出流,从索引`off`处开始读取。 - **其他常用方法**: - `public void flush() throws IOException`:刷新此输出流并强制写出所有缓冲的输出字节。 - `public abstract void close() throws IOException`:关闭此输出流并释放与此流相关的所有系统资源。 #### 三、FileInputStream与FileOutputStream **1. FileInputStream** - **基本介绍**:`FileInputStream`是`InputStream`的一个子类,用于从文件系统中的文件读取字节。 - **构造方法**: - `public FileInputStream(String name)`:创建一个新的文件输入流以从具有指定名称的文件中读取字节。 - `public FileInputStream(File file)`:创建一个新的文件输入流以从由指定`File`对象表示的文件中读取字节。 - **示例代码**: ```java import java.io.FileInputStream; class Echo2 { public Echo2(InputStream in) throws Exception { int b; while ((b = in.read()) != -1) { System.out.print((char) b); } in.close(); } public static void main(String[] args) throws Exception { new Echo2(new FileInputStream("read.txt")); } } ``` **2. FileOutputStream** - **基本介绍**:`FileOutputStream`是`OutputStream`的一个子类,用于向文件系统中的文件写入字节。 - **构造方法**: - `public FileOutputStream(String name)`:创建一个新文件输出流以写入具有指定名称的文件。 - `public FileOutputStream(File file)`:创建一个新文件输出流以写入由指定`File`对象表示的文件。 - **示例代码**: ```java import java.io.FileOutputStream; class WriteToFile { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("write.txt"); String str = "Hello, Java!"; byte[] b = str.getBytes(); fos.write(b); fos.close(); } } ``` #### 四、示例应用 - **InputStream示例**:下面的示例演示了一个简单的回声程序,该程序从标准输入读取数据,并立即输出到标准输出。 ```java import java.io.InputStream; class Echo1 { Echo1(InputStream in) throws Exception { int b; while ((b = in.read()) != -1) { System.out.print((char) b); } in.close(); } public static void main(String[] args) throws Exception { new Echo1(System.in); } } ``` - **System.in与System.out**: - `System.in`是一个`InputStream`类型的对象,用于从标准输入设备(通常是键盘)读取数据。 - `System.out`是一个`PrintStream`类型的对象,通常用于将数据输出到标准输出设备(通常是屏幕)。 - **Copy程序示例**:下面的程序将从标准输入复制数据到标准输出。 ```java import java.io.InputStream; import java.io.OutputStream; class Copy { Copy(InputStream in, OutputStream out) throws IOException { int b; while ((b = in.read()) != -1) { out.write(b); } in.close(); out.close(); } public static void main(String[] args) throws IOException { new Copy(System.in, System.out); } } ``` 通过以上介绍,我们可以看到Java中的字节流提供了非常灵活的方式来处理文件和其他数据源的读写操作。开发者可以根据具体需求选择合适的类来进行数据的处理。





























剩余7页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2019年网络技术部工作总结.doc
- 单位工程监理存档资料分类目录.doc
- 得汇集团股权机构设计咨询方案.ppt
- 6-平面的投影.ppt
- 香料基础化学第10章重氮化与重氮盐的转化.ppt
- 敦煌大剧院二次结构植筋施工方案.docx
- 春季电子商务概论课程第次作业.doc
- PLC控制技术优秀教学课件.doc
- 青少年校外体育活动中心招标文件.doc
- 工程造价管理-6章-.pdf
- 地下室抹灰施工技术交底记录.doc
- 2022年新零售大数据分析平台建设方案2.pptx
- 焊接专业雨季施工.doc
- 第三章-建筑工程计算规则3.ppt
- 2015年水利设施信息采集系统工程招标文件.doc
- 某炼油厂水处理车间地坪防腐施工工艺.doc


