当前位置:实例文章 » JAVA Web实例» [文章]13.0、Java_IO流 - 数据流

13.0、Java_IO流 - 数据流

发布人:shili8 发布时间:2025-01-10 16:30 阅读次数:0

**Java IO 流 - 数据流**

在 Java 中,IO 流(Input/Output Stream)是用于读取和写入数据的基本类。它提供了一个抽象层,使得程序可以与外部世界进行交互。IO 流分为两大类:输入流(InputStream)和输出流(OutputStream)。

**1. 输入流(InputStream)**

输入流用于从外部世界读取数据,例如从文件、网络或键盘等来源。Java 中的输入流有以下几种类型:

* `ByteArrayInputStream`:一个字节数组输入流。
* `FileInputStream`:一个文件输入流。
* `ObjectInputStream`:一个对象输入流。
* `PipedInputStream`:一个管道输入流。

**2. 输出流(OutputStream)**

输出流用于向外部世界写入数据,例如到文件、网络或打印机等目的地。Java 中的输出流有以下几种类型:

* `ByteArrayOutputStream`:一个字节数组输出流。
* `FileOutputStream`:一个文件输出流。
* `ObjectOutputStream`:一个对象输出流。
* `PipedOutputStream`:一个管道输出流。

**3. 缓冲流(BufferedInputStream和BufferedOutputStream)**

缓冲流是对输入流或输出流的包装类,用于提高读取和写入速度。它通过在内存中缓存数据来实现这一点。

* `BufferedInputStream`:一个缓冲输入流。
* `BufferedOutputStream`:一个缓冲输出流。

**4. 转换流(FilterInputStream和FilterOutputStream)**

转换流是对输入流或输出流的包装类,用于改变数据的格式。它通过在读取或写入过程中进行转换来实现这一点。

* `FilterInputStream`:一个转换输入流。
* `FilterOutputStream`:一个转换输出流。

**5. 数据流(DataInputStream和DataOutputStream)**

数据流是对输入流或输出流的包装类,用于读取和写入基本类型的数据。它通过提供读取和写入基本类型的方法来实现这一点。

* `DataInputStream`:一个数据输入流。
* `DataOutputStream`:一个数据输出流。

**示例代码**

###读取文件

javaimport java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadFile {
 public static void main(String[] args) throws IOException {
 // 指定文件路径 String filePath = "test.txt";

 // 创建一个文件输入流 FileInputStream fileInputStream = new FileInputStream(filePath);

 //读取文件内容 byte[] bytes = new byte[1024];
 int len;
 while ((len = fileInputStream.read(bytes)) != -1) {
 System.out.println(new String(bytes,0, len));
 }

 // 关闭输入流 fileInputStream.close();
 }
}


### 写入文件
javaimport java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteFile {
 public static void main(String[] args) throws IOException {
 // 指定文件路径 String filePath = "test.txt";

 // 创建一个文件输出流 FileOutputStream fileOutputStream = new FileOutputStream(filePath);

 // 写入内容 String content = "Hello, World!";
 byte[] bytes = content.getBytes();
 fileOutputStream.write(bytes);

 // 关闭输出流 fileOutputStream.close();
 }
}


### 使用缓冲流
javaimport java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class UseBuffer {
 public static void main(String[] args) throws IOException {
 // 指定文件路径 String filePath = "test.txt";

 // 创建一个缓冲输入流 FileInputStream fileInputStream = new FileInputStream(filePath);
 BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

 //读取内容 byte[] bytes = new byte[1024];
 int len;
 while ((len = bufferedInputStream.read(bytes)) != -1) {
 System.out.println(new String(bytes,0, len));
 }

 // 关闭输入流 bufferedInputStream.close();

 // 创建一个缓冲输出流 FileOutputStream fileOutputStream = new FileOutputStream(filePath);
 BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

 // 写入内容 String content = "Hello, World!";
 byte[] bytes2 = content.getBytes();
 bufferedOutputStream.write(bytes2);

 // 关闭输出流 bufferedOutputStream.close();
 }
}


### 使用转换流
javaimport java.io.FilterInputStream;
import java.io.FilterOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class UseFilter {
 public static void main(String[] args) throws IOException {
 // 指定文件路径 String filePath = "test.txt";

 // 创建一个转换输入流 FileInputStream fileInputStream = new FileInputStream(filePath);
 FilterInputStream filterInputStream = new FilterInputStream(fileInputStream);

 //读取内容 byte[] bytes = new byte[1024];
 int len;
 while ((len = filterInputStream.read(bytes)) != -1) {
 System.out.println(new String(bytes,0, len));
 }

 // 关闭输入流 filterInputStream.close();

 // 创建一个转换输出流 FileOutputStream fileOutputStream = new FileOutputStream(filePath);
 FilterOutputStream filterOutputStream = new FilterOutputStream(fileOutputStream);

 // 写入内容 String content = "Hello, World!";
 byte[] bytes2 = content.getBytes();
 filterOutputStream.write(bytes2);

 // 关闭输出流 filterOutputStream.close();
 }
}


### 使用数据流
javaimport java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class UseData {
 public static void main(String[] args) throws IOException {
 // 指定文件路径 String filePath = "test.txt";

 // 创建一个数据输入流 FileInputStream fileInputStream = new FileInputStream(filePath);
 DataInputStream dataInputStream = new DataInputStream(fileInputStream);

 //读取基本类型的数据 int i = dataInputStream.readInt();
 double d = dataInputStream.readDouble();
 boolean b = dataInputStream.readBoolean();

 System.out.println(i + ", " + d + ", " + b);

 // 关闭输入流 dataInputStream.close();

 // 创建一个数据输出流 FileOutputStream fileOutputStream = new FileOutputStream(filePath);
 DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);

 // 写入基本类型的数据 int i2 =123;
 double d2 =456.789;
 boolean b2 = true;

 dataOutputStream.writeInt(i2);
 dataOutputStream.writeDouble(d2);
 dataOutputStream.writeBoolean(b2);

 // 关闭输出流 dataOutputStream.close();
 }
}


以上是Java IO 流的基本使用方法和示例代码。

相关标签:java开发语言
其他信息

其他资源

Top