我的目标是创建具有特定扩展名的所有文件的索引,并将其存储到index.txt中。我得到了所有正确的结果,但没有将'文件'放到新行上,这是我的代码的快照:
OutputStream f0 = new FileOutputStream("index.txt");
String ind[] = f.list(only); // logic for getting only relevant files
for(int i=0;i<ind.length;i++)
{
File n = new File(path + "/" +ind[i]);
System.out.println(ind[i]+ " is a " +exten +" file");
ind[i]+="\n"; // doesnt work
f0.write(ind[i].getBytes()); // here i am writing the filenames
}
是否由于getBytes()函数忽略了“/ n”?请告诉我该怎么办。我想在每次退出for循环时插入一个新行。
一个主要编辑:当我用notepad ++或wordpad打开文件时,我得到了所需的结果,但是当我用记事本打开文件时,我得到的结果在同一行。请解释一下!
答案 0 :(得分:5)
尝试写作:
System.getProperty("line.separator")
而不是\ n
答案 1 :(得分:2)
我没有使用FileOutputStream,而是使用PrintWriter。
PrintWriter out = new PrintWriter("index.txt");
String ind[] = f.list(only); // logic for getting only relevant files
for(int i=0;i<ind.length;i++)
{
File n = new File(path + "/" +ind[i]);
System.out.println(ind[i]+ " is a " +exten +" file");
out.println(ind[i]);
}
答案 2 :(得分:2)
这里缺少一个假设。
\r\n
。\n
(或打印新行\r
)。答案 3 :(得分:1)
您是否有任何理由在Java中使用如此低级别的I / O?首先,你应该使用Writers而不是OutputStreams。
然后,如果您使用PrintWriter,您可以取消使用getBytes:
PrintWriter f0 = new PrintWriter(new FileWriter(&#34; index.txt&#34;));
然后......
f0.print(IND [I]);
最后你的问题,在循环之外简单
f0.println();
答案 4 :(得分:1)
试试这个,
FileWriter.write("\r\n");