用Java在文件中打印新行

时间:2012-01-23 16:33:59

标签: java cross-platform newline carriage-return separator

我的目标是创建具有特定扩展名的所有文件的索引,并将其存储到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打开文件时,我得到了所需的结果,但是当我用记事本打开文件时,我得到的结果在同一行。请解释一下!

5 个答案:

答案 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)

这里缺少一个假设。

  1. 如果您认为您的文本文件应该包含 MS Windows 行分隔符(适用于Windows平台),那么您应该使用\r\n
  2. 如果您认为您的文本文件应该具有类似Unix的行分隔符(适用于GNU / Linux,AIX,Xenix,Mac OS X,FreeBSD等),那么您应该使用{ {1}}。
  3. 如果您认为您的文本文件应该有 Mac oldschool 行分隔符(适用于Mac OS版本9,Apple II系列,OS-9等),那么您应该使用{ {1}}。
  4. 如果您认为您的文本文件应该包含您的程序运行的平台类型的行分隔符,那么您应该使用\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");
相关问题