基于字节的 I/O 类
输入流
- **`FileInputStream`**:用于从文件中读取字节数据。
java
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
- **`ByteArrayInputStream`**:用于从字节数组中读取数据。
java
import java.io.ByteArrayInputStream;
public class ByteArrayInputStreamExample {
public static void main(String[] args) {
byte[] byteArray = {65, 66, 67, 68, 69};
try (ByteArrayInputStream bais = new ByteArrayInputStream(byteArray)) {
int data;
while ((data = bais.read()) != -1) {
System.out.print((char) data);
}
}
}
}
输出流
- **`FileOutputStream`**:用于将字节数据写入文件。
java
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
byte[] bytes = data.getBytes();
fos.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
}
}
- **`ByteArrayOutputStream`**:用于将数据写入字节数组。
java
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteArrayOutputStreamExample {
public static void main(String[] args) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
String data = "Hello, Java!";
byte[] bytes = data.getBytes();
baos.write(bytes);
byte[] result = baos.toByteArray();
System.out.println(new String(result));
} catch (IOException e) {
e.printStackTrace();
}
}
}
基于字符的 I/O 类
输入流
- **`FileReader`**:用于从文件中读取字符数据。
java
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("example.txt")) {
int data;
while ((data = fr.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
- **`BufferedReader`**:提供缓冲功能,提高读取效率,通常与其他字符输入流一起使用。
java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出流
- **`FileWriter`**:用于将字符数据写入文件。
java
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
String data = "Hello, Java!";
try (FileWriter fw = new FileWriter("output.txt")) {
fw.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
- **`BufferedWriter`**:提供缓冲功能,提高写入效率,通常与其他字符输出流一起使用。
java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterExample {
public static void main(String[] args) {
String data = "Hello, Java!";
try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
bw.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
其他重要的 I/O 类
- **`Scanner`**:主要用于从控制台或其他输入源读取基本数据类型和字符串。
java
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("你输入的整数是:" + num);
scanner.close();
}
}
- **`PrintWriter`**:用于格式化输出,可将数据写入文件或其他输出流。
java
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class PrintWriterExample {
public static void main(String[] args) {
try (PrintWriter pw = new PrintWriter(new FileWriter("output.txt"))) {
pw.println("Hello, Java!");
pw.printf("整数: %d, 小数: %.2f", 10, 3.14);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这些类为 Java 程序提供了强大的输入输出能力,你可以根据具体的需求选择合适的类来完成相应的操作。