为什么for循环不写入第二个对象?

  • 本文关键字:第二个 对象 for 循环 java
  • 更新时间 :
  • 英文 :


我正在尝试创建一个程序,它在用户的桌面上创建了很多。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

所以,如果你真的需要打印数值09

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
}

相关内容

最新更新