Java 创建和写入文件
在 Java 中有多种创建写入数据到文件的方式。
Files.write
创建写入数据到文件(JDK 7)Files.writeString
创建写入数据到文件(JDK11)BufferedWriter
创建写入数据到文件
Files.write ⭐️
从 Java 7 开始,新增了 Files
类,其中的 write
方法可以方便的创建写入文件。
String content = "www.wdbyte.com, java 7";
Path path = Paths.get("/Users/darcy/wdbyte/test1.txt");
// string -> bytes
Files.write(path, content.getBytes(StandardCharsets.UTF_8));
查看文件:
➜ pwd
/Users/darcy/wdbyte
➜ cat test1.txt
www.wdbyte.com, java 7
运行两次,文件内容会被覆盖,结果不变。
使用 StandardOpenOption.APPEND
定义追加模式。
String content = "www.wdbyte.com,java 7" + System.lineSeparator();
Path path = Paths.get("/Users/darcy/wdbyte/test2.txt");
Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE,
StandardOpenOption.APPEND);
Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE,
StandardOpenOption.APPEND);
查看文件:
➜ cat test2.txt
www.wdbyte.com,java 7
www.wdbyte.com,java 7
Files.write
也可以直接写入 List 内容到文件,每个元素一行。
List<String> dataList = Arrays.asList("www", "wdbyte", "com", "java 7");
Path path = Paths.get("/Users/darcy/wdbyte/test3.txt");
Files.write(path, dataList);
查看文件:
➜ cat test3.txt
www
wdbyte
com
java 7
Files.writeString
Java 11 开始,Files
类新增了 writeString
方法,可以直接把字符串写入文件而不用 getBytes
。
Path path = Paths.get("/Users/darcy/wdbyte/test5.txt");
Files.writeString(path, "www.wdbyte.com,java 11");
BufferedWriter
Java 7 之前,通过 BufferedWriter
写入数据到文件的方式。
String content = "www.wdbyte.com,java 7";
String filePath = "/Users/darcy/wdbyte/test0.txt";
try (FileWriter fw = new FileWriter(filePath);
BufferedWriter bw = new BufferedWriter(fw)) {
bw.write(content);
bw.newLine();
}
// 追加模式
try (FileWriter fw = new FileWriter(filePath, true);
BufferedWriter bw = new BufferedWriter(fw)) {
bw.write(content);
bw.newLine();
}
查看结果:
➜ cat test0.txt
www.wdbyte.com,java 7
www.wdbyte.com,java 7
Java 7 开始,也可以通过 Files
获取 BufferedWriter
.
String content = "www.wdbyte.com,java 7";
Path path = Paths.get("/Users/darcy/wdbyte/test4.txt");
// 默认 utf_8
try (BufferedWriter bw = Files.newBufferedWriter(path)) {
bw.write(content);
bw.newLine();
}
// 追加模式
try (BufferedWriter bw = Files.newBufferedWriter(path,
StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
bw.write(content);
bw.newLine();
}
查看结果:
➜ cat test4.txt
www.wdbyte.com,java 7
www.wdbyte.com,java 7
一如既往,文章中代码存放在 Github.com/niumoo/javaNotes.