2011-09-09 134 views

回答

19

你必須寫字符串...

你可以試試。

wr.write("123"); 

OR

wr.write(new Integer(123).toString()); 

OR

wr.write(String.valueOf(123)); 
+0

爲什麼我: PrintStream可以通過兩種方式(至少)

PrintStream ps = new PrintStream("file_location.txt"); 

OR

PrintStream ps = new PrintStream(new File("file_loc.txt")); 

和寫入,使用時可以必須使int 123成爲一個o對象類型的Integer? Dosent java已經知道這是一個int值,因此應該能夠將其轉換爲字符串? Obj有什麼區別? Integer和int的數據類型? –

+2

@AshwinGupta @AshwinGupta和其他人都想知道,這是因爲'wr.write(int)'方法實際上並沒有寫入int本身,它將'int'表示的字符寫入指定的編碼中(如果未指定,則使用utf-8 )。所以int被映射到其他字符,使它成爲一個對象,並獲取它的字符串迫使它寫下實際的整數,否則自動裝箱或拆箱會將它轉換回原始的int。請參閱:https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html#write(int) – matrixanomaly

3

123 = 0x7b = ASCII碼{,所以你寫的字符文件。 使用toString()方法將該值轉換爲字符串並輸出。

2

問題是Writer.write用於發送單個字符到輸出。目前尚不清楚爲什麼它int,而不是char,無可否認 - 它將使意義,如果你可以使用它來發送非BMP字符,但documentation狀態:

寫入單個字符。要寫入的字符包含在給定整數值的16個低位中; 16位高位被忽略。

您需要先將整數轉換爲字符串,例如

int v = 123; // I'm assuming this is dynamic in reality 
wr.write(String.valueOf(v)); 
3

的Javadoc是你的朋友:

方便類寫入字符文件。

}是ASCII碼值的字符123

如果你想的123文本表示寫入該文件,你會想做的事:

wr.write(Integer.toString(123)); 
1

然而一個方法:

wr.write(""+123); //immediately convert int to its String representation 

wr.write(""+i); 

但我不知道,它是如何影響的性能與其他方法相比較,但寫起來要簡單一些。 :)

PS:對不起,我可能是壞的英語

4

也有寫整數使用提交一個非常簡單的方法FileWriter的:

Writer wr = new FileWriter("123.txt"); 
wr.write(123 + ""); 
wr.close(); 

的+「」地連接了與整數空字符串,從而將整數解析爲字符串。很容易做和記住。

+0

幫助了我很多。謝謝。 – SpiderRico

2

我在過去有一個很好的經驗PrintStream

ps.println("String text"); 

OR

ps.println(Integer.parseInt(123));