未插入换行符



这是片段:

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.txtf2.txt 的文件,但我希望127.0.0.1 www.bing.comf2.txt 的新行中,但它发生在同一行(即,该文件与 f1.txt 相同)。

当我在字符串构造函数中插入新的行字符时,为什么没有在f2.txt中获得新行?

不要在新行中使用n或类似的东西 - 这取决于平台。

使用System.getProperty("line.separator")

尝试找出分隔符应该是什么。例如,您可以尝试rn。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

如果您使用的操作系统不使用n作为行分隔符(如 Windows),您仍将获得相同的输出,但用于查看该文件(或处理该文件)的工具可能无法按预期工作。如果您将n替换为rn,您可能会发现其他工具在Windows上运行良好。

但是,为了便于移植,请使用 line.separator 属性,而不是直接使用 n(或rn):

String s2=new String("127.0.0.1 www.google.com" +
    System.getProperty("line.separator") +
    "127.0.0.1 www.bing.com");

在文件输出流上使用打印流:

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();

裁判:如何使用文件输出流编写换行符

相关内容

  • 没有找到相关文章

最新更新