这是片段:
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);
我在当前目录中获得了名为f1.txt
和f2.txt
的2个文件,但我希望127.0.0.1 www.bing.com
位于f2.txt
的新行中,但它出现在同一行(即文件与f1.txt
相同)。
当我在String构造函数中插入换行符时,为什么不在f2.txt
中获取新行?
答案 0 :(得分:5)
不要对新行使用\n
或类似的东西 - 这取决于平台。
使用System.getProperty("line.separator")
答案 1 :(得分:2)
我不确定你在运行什么平台,但是在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
替换为\r\n
,您可能会发现其他工具适用于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");
答案 2 :(得分:2)
尝试找出分隔符应该是什么。例如,您可以尝试\r\n
。它在Linux和Windows之间有所不同,哪些字符用于“新行”(换行和回车)
(回车意味着光标转到第一个字符,换行意味着光标“向下一行”。根据您的操作系统的作用,您需要一个或两个)
答案 3 :(得分:0)
在fileoutputstream上使用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();