0

ランダムな整数名のファイルを生成し、各ファイルに 200 文字のデータを追加するプログラムがあります。私はすでにファイルを作成できることに成功しています:

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

charそして、ファイルに s を書き込むようになりました。

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

しかし、この 2 つを 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;}

「Total: (number) characters written to (whatever).txt!」という出力が得られます。しかし、実際には文字を書きません。qu++ただし、( に変更して)ループを無限にするqu--と、もちろん 1 つのファイルだけで文字が書き込まれます。ループに変更してみましたが、whileうまくいきませんでした。何か案は?

4

2 に答える 2

1

ファイルをコンストラクターの引数として受け取る FileWriterBufferedOutputStreamのとPrintWriterの使用を変更することを検討してください。

また、ストリームが終了したら、必ずストリームをフラッシュして閉じてください。

于 2014-11-11T14:07:04.453 に答える
0

を使用する必要があります。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();
于 2014-11-11T14:19:50.300 に答える