这是片段:
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
相同)。
当我在字符串构造函数中插入新的行字符时,为什么没有在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();
裁判:如何使用文件输出流编写换行符