java写入文件的几种方法分享


在Java中,写入文件是一个常见的操作,可以通过多种方式来实现。以下是一些常用的方法:

### 1. 使用`FileWriter`

`FileWriter`类用于写入字符文件。它是`OutputStreamWriter`的一个子类,用于将字符流写入文件。


try (FileWriter writer = new FileWriter("example.txt")) {
    writer.write("Hello, World!");
} catch (IOException e) {
    e.printStackTrace();
}

### 2. 使用`BufferedWriter`

`BufferedWriter`提供了缓冲的写入功能,可以显著提高写入性能。它经常与`FileWriter`结合使用。


try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
    writer.write("Hello, Buffered World!");
    writer.newLine(); // 写入换行符
    writer.write("Another line.");
} catch (IOException e) {
    e.printStackTrace();
}

### 3. 使用`PrintWriter`

`PrintWriter`是一个方便的类,它提供了打印格式化的字符串到文件的功能。它也可以用于写入字符数据。


try (PrintWriter writer = new PrintWriter("example.txt")) {
    writer.println("Hello, PrintWriter!");
    writer.printf("Formatted number: %d%n", 123);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

### 4. 使用`Files`类(Java 7及以上)

Java 7引入了`Files`类,提供了许多静态方法用于文件操作,包括写入文件。`Files.write()`方法可以将一个字节数组或字符序列写入文件。

写入字节数组(例如,字符串转字节后):


String content = "Hello, Files!";
byte[] bytes = content.getBytes();
try {
    Files.write(Paths.get("example.txt"), bytes);
} catch (IOException e) {
    e.printStackTrace();
}

写入字符序列(Java 8及以上,使用`StandardCharsets`):


String content = "Hello, Files in Java 8!";
try {
    Files.write(Paths.get("example.txt"), content.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
    e.printStackTrace();
}

或者,使用`Files.lines()`结合`Files.write()`(适用于写入多行文本):


List<String> lines = Arrays.asList("First line", "Second line");
try {
    Files.write(Paths.get("example.txt"), lines, StandardCharsets.UTF_8, StandardOpenOption.CREATE);
} catch (IOException e) {
    e.printStackTrace();
}

每种方法都有其适用的场景。`FileWriter`和`BufferedWriter`适用于简单的字符写入操作,而`PrintWriter`提供了更多的格式化功能。`Files`类则提供了一种更现代、更灵活的方式来处理文件,尤其是在Java 7及以上版本中。