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

Java 为什么for循环不写入第二个对象?,java,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) {

我试图创建一个程序,在用户的桌面上创建大量的.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();
        }

    }
}


packagemain;
导入java.io.BufferedWriter;
导入java.io.FileWriter;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串userHome=System.getProperty(“user.home”);
字符串路径=userHome+“/Desktop/test.txt”;
试一试{
对于(int j=0;j<10;j++){
BufferedWriter br=new BufferedWriter(新文件编写器(userHome+“/Desktop/test”+j+“.txt”);
对于(int i=0;i<10;i++){
br.写(i);
br.newLine();
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
bw.write(i)这不会按预期打印数值

c-指定要写入的字符的int

因此,如果您确实需要打印数值
0
9

bw.write(i+48);
另外,请使用
bw.close()

读者/作者使用中的一般注意事项 始终使用带有编码的写入器/读取器,并且不要假定为UTF-8。最好是显式地说明编码

假设您使用的是Java11

导入java.io.BufferedWriter;
导入java.io.FileWriter;
导入java.nio.charset.StandardCharset;
公共班机{
公共静态void main(字符串[]args){
最后一个字符串userHome=System.getProperty(“user.home”);
最终字符串路径=userHome+“/Desktop/”;
对于(int j=0;j<10;j++){
最终字符串文件=路径+“/test”+j+“.txt”;
try(final FileWriter fw=newfilewriter(文件,StandardCharsets.UTF_8);
最终缓冲写入程序bw=新缓冲写入程序(fw)){
对于(int i=0;i<10;i++){
write(i+48);//bw.write(String.valueOf(i));
换行符();
}
}捕获(例外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
            }
for(int j=0;j<10;j++){
BufferedWriter br=new BufferedWriter(新文件编写器(userHome+“/Desktop/test”+j+“.txt”);
对于(int i=0;i<10;i++){
br.write(String.valueOf(i));//代替br.write(i);
br.newLine();
}
br.close();//关闭编写器
}

e.printStackTrace()打印时是否有任何错误或异常?
没有,它只是毫无异常地执行。首先,put
br.close()
在for循环的末尾,哪个for循环?在for-i循环的内部结束括号之后,在for-j循环的外部结束括号之前当我们在纠正问题时,对于
缓冲写入程序
添加
bw
而不是
br
,怎么样。我很想知道,如果我错了,为什么
br
会有意义。@Harsh,谢谢你的反馈,我已经更新了答案(最初使用的是OP使用的确切变量)。