Java For循环不执行文件写入命令
我有一个程序,它应该生成一个具有随机整数名的文件,并将200个字符的数据附加到每个文件中。我已经成功创建了一个文件: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));
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没有缓冲。。。