用Java打印文件中的新行
我的目标是为所有具有特定扩展名的文件建立索引,并将其存储到index.txt中。我得到了所有正确的结果,但没有将“文件”放到新行,这是我代码的快照:用Java打印文件中的新行,java,cross-platform,newline,carriage-return,separator,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++)
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
}
OutputStream f0=新文件OutputStream(“index.txt”);
字符串ind[]=f.list(仅限);//仅获取相关文件的逻辑
对于(int i=0;i试着写:
System.getProperty("line.separator")
我将使用PrintWriter而不是\n而不是使用FileOutputStream
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]);
}
PrintWriter out=新的PrintWriter(“index.txt”);
String ind[]=f.list(仅限);//仅获取相关文件的逻辑
对于(inti=0;i,您在Java中使用如此低的i/O级别有什么原因吗?首先,您应该使用writer而不是OutputStreams
然后,如果使用PrintWriter,则可以删除getBytes部分:
PrintWriter f0=新的PrintWriter(新的FileWriter(“index.txt”)
然后后来
f0.打印(ind[i])
最后是你的问题,在循环之外
f0.println();试试这个
FileWriter.write("\r\n");
这里缺少一个假设
如果假定文本文件应具有MS Windows行分隔符(用于Windows平台),则应使用\r\n
如果您假设文本文件应该具有类似Unix的行分隔符(用于GNU/Linux、AIX、Xenix、Mac OS X、FreeBSD等),那么您应该使用\n
如果您假设您的文本文件应该有Mac oldschool行分隔符(适用于Mac OS版本9、Apple II系列、OS-9等),那么您应该使用\r
如果您假设文本文件应该具有与您的程序运行时所使用的平台类型相同的行分隔符,那么您应该使用System.getProperty(“line.separator”)
(或者使用.println()
)打印新行)
有人能用我在同一个文件中得到的各种结果来解释这个异常吗?记事本只读取一个类型行分隔符。这就是为什么,它似乎都在一行中。@Purushottam“有人能用我在同一个文件中得到的各种结果来解释这个异常吗?”请看我下面的回答,以了解有关跨平台换行/换行的澄清。这显然只适用于Windows类平台,当然不是您在Mac或*nix上想要的。。