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

Java For循环不执行文件写入命令,java,for-loop,io,printwriter,bufferedoutputstream,Java,For Loop,Io,Printwriter,Bufferedoutputstream,我有一个程序,它应该生成一个具有随机整数名的文件,并将200个字符的数据附加到每个文件中。我已经成功创建了一个文件: BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream( new File("C:/Users/mirvine/Desktop/SPAM").toPath())); 我已经让它将chars写入文件: bos.write((char)rand.nextInt(255));

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

BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(
         new File("C:/Users/mirvine/Desktop/SPAM").toPath()));
我已经让它将
char
s写入文件:

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;}
试试看{
while(true){
int i=rand.nextInt();
File outputFile=新文件(“C:/Users/mirvine/Desktop/SPAM/”+String.valueOf(i)+.txt”);
bos=新的BufferedOutputStream(Files.newOutputStream(outputFile.toPath());
PrintWriter=新的PrintWriter(bos);

对于(int qu=0;qu请考虑更改
BufferedOutputStream
PrintWriter
for的使用,这将把文件作为构造函数的参数


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

您应该使用
BufferedWriter
,这样效率更高,并且不要忘记在最后关闭它。无限循环是无用的

int i = rand.nextInt();
File outputFile = new File("C:/Users/mirvine/Desktop/SPAM/"+ String.valueOf(i) +".txt");
FileOutputStream fos = new FileOutputStream(outputFile);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));  
for(int qu = 0; qu <= 2000; qu++)
{
    bw.write((char)rand.nextInt(255));
    System.out.println("Total " + String.valueOf(qu) + " characters written to " + String.valueOf(i) + ".txt!");
}
bw.close();
int i=rand.nextInt();
File outputFile=新文件(“C:/Users/mirvine/Desktop/SPAM/”+String.valueOf(i)+.txt”);
FileOutputStream fos=新的FileOutputStream(outputFile);
BufferedWriter bw=新的BufferedWriter(新的OutputStreamWriter(fos))

对于(int qu=0;qu我觉得没有必要关闭它,因为它应该无限长,但我确实忘记了刷新,我注意到我在
while
循环中定义了它,应该关闭它。这是我的问题。谢谢!虽然可行,但在写入字符数据时建议使用FileWriter而不是OutputStreamWriter到文件,因为它将自动设置字符编码。不过,在BufferedWriter中包装它是一个不错的技巧!忘记了原始FileWriter没有缓冲。。。