2011-08-12 82 views
1

從下面的代碼:爲什麼其他部分不在下一行打印?

import java.io.*; 

class fileTester { 
    public static void main(String args[]) throws IOException { 
    String string = "Suhail" + "\n" + "gupta"; 
    FileOutputStream fos = new FileOutputStream(new File("break.txt")); 
    byte[] data = string.getBytes(); 
    fos.write(data); 
    fos.close(); 
    } 
} 

我預期的輸出是:

Suhail

古普塔

INT文件創建(即兩個字符串中一個新的行)但輸出是在一個單一的行。

爲什麼當我在兩個字符串之間使用\n字符?

+1

操作系統? –

+0

@ John win7 ..... –

回答

3

寫入文件時,您不應該硬編碼新的行字符。使用特定於操作系統的新行字符串代替:

String newline = System.getProperty("line.separator"); 

此外,而不是使用一個FileOutputStream原始字節寫入一個文本文件,爲什麼不能在一個PrintStream對象包裝,所以你可以很容易地只是使用的println(.. )爲你做你的換行符?

+0

當我編寫'System.out.println(「A」+「\ n」+「B」)'_A_和_B_會打印新行。那\'n如何在這裏工作而不是在給定的代碼中? –

+0

Suhail:當您使用System.out「打印」時...您正在打印到與操作系統無關的控制檯,並將另一個打印到與操作系統無關的文件。 –

+0

我無法理解你的意思是什麼操作系統**不可知論者** –

0

如果你的操作系統是Windows比你必須使用\r\n新線,僅\n不會工作在Windows中,你可以找到更多的細節here

0

這是因爲針對Windows的新行:\ r \ñ。在其他操作系統\ n將很好

1

我想你是用記事本來查看文件。

行尾字符因系統而異。一個更高級的文本編輯器(例如Notepad ++)會正確顯示它,因爲它試圖找到該文件準備好的系統。

通常,而是採用總是「\ n」,使用

java.lang.System.getProperties().get("line.separator") 
0

當你需要一個新的生產線,最好的做法是使用系統的新行字符串,通過把在System.getProperty(「線.separator「)你想要換行的地方。

這樣,它會使用正確的新行來創建文件(windows/mac/linux)。

相關問題