Java 提供了强大而灵活的输入输出(I/O)功能,可用于与计算机的外部设备进行交互。 Java 的 I/O 机制支持多种输入和输出源,包括标准输入输出、文件、网络等。以下将详细介绍 Java 的输入输出。
1. 标准输入输出:
Java 通过 `System.out` 和 `System.in` 分别提供了标准输出流和标准输入流。
- `System.out` 是一个 `PrintStream` 对象,它提供了各种 `print` 和 `println` 方法,用于将数据输出到标准输出流(通常是控制台)。例如,`System.out.println("Hello, World!")` 可以将文本输出到控制台并换行。
- `System.in` 是一个 `InputStream` 对象,它提供了方法来从标准输入读取数据。为了方便读取用户输入,可使用 `Scanner` 类。示例代码:
```java
import java.util.Scanner;
public class StandardIOExample {
public static void main(String[] args) {
// 输出到标准输出
System.out.println("Hello, World!");
// 从标准输入读取用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int num = scanner.nextInt();
System.out.println("您输入的整数是: " + num);
}
}
```
2. 文件输入输出:
Java 的文件输入输出功能主要依赖于 `java.io` 包中的类。
- 文件读取:可以使用 `File` 类和 `FileReader` 类来打开和读取文件。为了提高效率,可以使用 `BufferedReader` 对象对 `FileReader` 进行包装,从而实现缓冲读取。示例代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileIOExample {
public static void main(String[] args) {
try {
// 打开文件并读取
FileReader fileReader = new FileReader("input.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
- 文件写入:使用 `FileWriter` 类可以打开并写入文件。同样,为了提高效率,可以使用 `BufferedWriter` 对象对 `FileWriter` 进行包装,实现缓冲写入。示例代码:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileIOExample {
public static void main(String[] args) {
try {
// 打开文件并写入
FileWriter fileWriter = new FileWriter("output.txt");
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write("Hello, World!");
bufferedWriter.newLine();
bufferedWriter.write("这是一行文本。");
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
3. 网络输入输出:
Java 提供了 `java.net` 包以支持网络通信,用于实现网络输入输出操作。可以使用 `Socket` 类与服务器进行通信,以及使用 `InputStream` 和 `OutputStream` 读取和写入数据。示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class NetworkIOExample {
public static void main(String[] args) {
try {
// 连接到服务器
Socket socket = new Socket("127.0.0.1", 8080);
// 从服务器接收数据
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 关闭连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上是 Java 的输入输出机制的基本概述。