使用字节流读取和写入文件
字节流适用于处理所有类型的文件,包括文本文件和二进制文件。
读取文件
import java.io.FileInputStream;
import java.io.IOException;
public class ByteStreamReadExample {
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();
}
}
}
写入文件
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamWriteExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
String content = "Hello, World!";
fos.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用字符流读取和写入文件
字符流更适合处理文本文件,因为它处理的是字符而不是字节。
读取文件
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CharStreamReadExample {
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();
}
}
}
写入文件
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CharStreamWriteExample {
public static void main(String[] args) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"))) {
String content = "Hello, World!";
bw.write(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 NIO 读取和写入文件
Java NIO(New I/O)提供了一种更高效的文件处理方式。
读取文件
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.List;
public class NIOReadExample {
public static void main(String[] args) {
try {
List<String> lines = Files.readAllLines(Paths.get("example.txt"));
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
写入文件
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class NIOWriteExample {
public static void main(String[] args) {
String content = "Hello, World!";
try {
Files.write(Paths.get("example.txt"), content.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
}
}
总结
- 字节流: 适用于处理所有类型的文件,包括文本文件和二进制文件。
- 字符流: 更适合处理文本文件。
- NIO: 提供了一种更高效的文件处理方式,适用于大文件或高性能需求的应用。
通过这些示例代码,您可以掌握基本的文件读写操作,并根据具体需求选择合适的方法。