繁体   English   中英

用Java在文件中打印新行

[英]Printing a new line in a file, in Java

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

试着写:

System.getProperty("line.separator") 

而不是\\ n

我没有使用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]);   
}

这里缺少一个假设。

  1. 如果您认为您的文本文件应具有MS Windows行分隔符(适用于Windows平台),则应使用\\r\\n
  2. 如果您假设您的文本文件应该具有类似Unix的行分隔符(适用于GNU / Linux,AIX,Xenix,Mac OS X,FreeBSD等),那么您应该使用\\n
  3. 如果您认为您的文本文件应该具有Mac oldschool行分隔符(适用于Mac OS版本9,Apple II系列,OS-9等),那么您应该使用\\r
  4. 如果您假设您的文本文件应该具有运行程序的平台类型的行分隔符,那么您应该使用System.getProperty("line.separator") (或使用.println()打印新行) 。

您是否有任何理由在Java中使用如此低级别的I / O? 首先,你应该使用Writers而不是OutputStreams。

然后,如果您使用PrintWriter,您可以取消getBytes部分:

PrintWriter f0 = new PrintWriter(new FileWriter(“index.txt”));

然后......

f0.print(IND [I]);

最后你的问题,简单地在循环之外

f0.println();

尝试这个,

FileWriter.write("\r\n");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM