我正在尝试创建一个程序,它在用户的桌面上创建了很多。txt文件,并在每个文件中写入一些东西,但它只是在第一个文件上写入,看起来第二个for循环不再工作了。
下面是我的代码:package main;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String userHome = System.getProperty("user.home");
String path = userHome + "/Desktop/test.txt";
try {
for (int j = 0; j < 10; j++) {
BufferedWriter br = new BufferedWriter(new FileWriter(userHome + "/Desktop/test" + j + ".txt"));
for (int i = 0; i < 10; i++) {
br.write(i);
br.newLine();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
bw.write(i);
这没有按预期打印数字值
c - int指定要写入的字符
Ref
所以,如果你真的需要打印数值0
到9
bw.write(i + 48);
同时,请使用bw.close()
关闭流
使用读/写器的一般注意事项
总是使用带有编码的写入器/读取器,不要假设是UTF-8。最好是显式地说明编码。
假设您正在使用java 11
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
final String userHome = System.getProperty("user.home");
final String path = userHome + "/Desktop/";
for (int j = 0; j < 10; j++) {
final String file = path + "/test" + j + ".txt";
try (final FileWriter fw = new FileWriter(file, StandardCharsets.UTF_8);
final BufferedWriter bw = new BufferedWriter(fw)) {
for (int i = 0; i < 10; i++) {
bw.write(i + 48); // bw.write(String.valueOf(i));
bw.newLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
你的代码中有两个问题。
for (int j = 0; j < 10; j++) {
BufferedWriter br = new BufferedWriter(new FileWriter(userHome + "/Desktop/test" + j + ".txt"));
for (int i = 0; i < 10; i++) {
br.write(String.valueOf(i)); // instead of br.write(i);
br.newLine();
}
br.close(); // close your writer
}