未插入新行

| 这是代码段:
String s1=new String(\"127.0.0.1 www.google.com127.0.0.1 www.bing.com\");
String s2=new String(\"127.0.0.1 www.google.com\" + \"\\n\" + \"127.0.0.1 www.bing.com\");
byte buffer1[]=s1.getBytes();
byte buffer2[]=s2.getBytes();
FileOutputStream fos=new FileOutputStream(\"f1.txt\");
for(int i=0;i<buffer1.length;i++)
fos.write(buffer1[i]);
FileOutputStream fos2=new FileOutputStream(\"f2.txt\");
for(int i=0;i<buffer2.length;i++)
fos2.write(buffer2[i]);
System.out.println(\"size of buffer1 = \"+buffer1.length);
System.out.println(\"\\nsize of buffer2 = \"+buffer2.length);
String x=new String(\"s\"+\"\\n\"+\"u\");
System.out.println(x);
我确实在当前目录中得到2个名为
f1.txt
f2.txt
的文件,但我希望
127.0.0.1 www.bing.com
出现在
f2.txt
的新行中,但它出现在同一行中(即,该文件与
f1.txt
相同)。 在String构造函数中插入换行符后,为什么在
f2.txt
中没有换行?     
已邀请:
不要在新行中使用ѭ7或类似符号-这取决于平台。 使用
System.getProperty(\"line.separator\")
    
尝试找出分隔符应该是什么。例如,您可以尝试ѭ9。 Linux和Windows之间的区别在于,什么字符用于\“换行\”(换行和回车) (回车表示光标移至第一个字符,换行表示光标移至“一行向下”。根据操作系统的不同,您需要一个或两个)     
我不确定您在哪个平台上运行,但是在Ubuntu上的Eclipse Galileo下,该平台的运行情况完全符合预期。 代码:
import java.io.FileOutputStream;
public class Find {
    public static void main(String args[]) {
        try {
            String s1=new String(\"127.0.0.1 www.google.com127.0.0.1 www.bing.com\");
            String s2=new String(\"127.0.0.1 www.google.com\" + \"\\n\" +
                \"127.0.0.1 www.bing.com\");

            byte buffer1[]=s1.getBytes();
            byte buffer2[]=s2.getBytes();

            FileOutputStream fos=new FileOutputStream(\"f1.txt\");
            for(int i=0;i<buffer1.length;i++)
                fos.write(buffer1[i]);

            FileOutputStream fos2=new FileOutputStream(\"f2.txt\");
            for(int i=0;i<buffer2.length;i++)
                fos2.write(buffer2[i]);

            System.out.println(\"size of buffer1 = \"+buffer1.length);
            System.out.println(\"size of buffer2 = \"+buffer2.length);

            String x=new String(\"s\"+\"\\n\"+\"u\");
            System.out.println(x);
        } catch (Exception e) {}
    }
}
输出:
size of buffer1 = 46
size of buffer2 = 47
s
u
并且两个文件不同:
f1.txt:
    127.0.0.1 www.google.com127.0.0.1 www.bing.com
f2.txt:
    127.0.0.1 www.google.com
    127.0.0.1 www.bing.com
如果您使用的操作系统不使用“ 7”作为行分隔符(例如Windows),您仍会获得相同的输出,但可以使用用于查看(或处理)该文件的工具)可能无法按预期工作。如果将ѭ7替换为ѭ9,您可能会发现其他工具在Windows上也能正常工作。 但是,为了便于携带,请直接使用
line.separator
属性而不是
\\n
(或
\\r\\n
):
String s2=new String(\"127.0.0.1 www.google.com\" +
    System.getProperty(\"line.separator\") +
    \"127.0.0.1 www.bing.com\");
    
在文件输出流上使用Printstream:
FileOutputStream f = new FileOutputStream(\"f2.txt\");
PrintStream ps = new PrintStream(f);
ps.print(\"127.0.0.1 www.google.com\");
ps.println(); //this writes your new line
ps.print(\"127.0.0.1 www.bing.com\");
ps.close();
参考: 如何使用FileOutputStream编写换行符     

要回复问题请先登录注册