java - For循环不执行文件写入命令

标签 java for-loop io printwriter bufferedoutputstream

我有一个程序,应该生成一个具有随机整数名称的文件,并向每个文件附加 200 个字符的数据。我已经成功地创建了一个文件:

BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(
         new File("C:/Users/mirvine/Desktop/SPAM").toPath()));

我已经将 char 写入文件:

bos.write((char)rand.nextInt(255));

但是当我将两者与 for 循环结合起来时,它不起作用:

try {
            while(true) {
                int i = rand.nextInt();
                File outputFile = new File("C:/Users/mirvine/Desktop/SPAM/"+ String.valueOf(i) +".txt");

                    bos = new BufferedOutputStream(Files.newOutputStream(outputFile.toPath()));
                    PrintWriter writer = new PrintWriter(bos);
                    for(int qu = 0; qu <= 2000; qu++) {
                        writer.write((char)rand.nextInt(255));
                        System.out.println("Total " + String.valueOf(qu) + " characters written to " + String.valueOf(i) + ".txt!");
                }
                    System.out.println("File named \'" + String.valueOf(i) + ".txt\' created!");

            }
        } catch (Exception e) {e.printStackTrace(); return;}

我将得到输出“总计:写入(无论如何).txt 的(数字)个字符!”但它实际上不会写出字符。但是,如果我使循环无限(通过将 qu++ 更改为 qu--),它会写入字符,当然只有一个文件。我什至尝试将其更改为 while 循环,但它不起作用。有什么想法吗?

最佳答案

考虑更改 FileWriterBufferedOutputStreamPrintWriter 的使用,它将把您的文件作为构造函数的参数。

此外,请确保在完成后刷新并关闭流。

关于java - For循环不执行文件写入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26866664/

相关文章:

java - Spring Data Projection 中的自定义日期时间格式

java - 将 pdf 文件复制到另一个文件时添加注释

java - System.out.println() 在 for 循环中无法正常工作

javascript - 计算 2 个数组中的每个值,如果每个数组的长度不相同,则推送长度较长的值

java - Windows 上非常奇怪的 FileOutputStream 行为

java - 使用自定义 @Query 注释的 Spring-Data Elasticsearch 存储库计数不起作用 "Expected 1 but found 30 results"

java - 当我尝试将 `\\` 替换为 `\` 时,为什么会出现 StringIndexOutOfBoundsException?

Java for循环制作 Asterisk 矩阵

java - 在java中打开临时文件

java - 读取单个字符java