2011-06-21 36 views
0

當我運行下面的代碼:想了解一些Java out.Write輸出

int i = 0 

try { 
     fstream = new FileWriter(filename); 
     BufferedWriter out = new BufferedWriter(fstream); 
while (i < 100) { 
      out.write("My Name is Bobby Bob"); 
      out.write(i); 
      out.newLine(); 
      i++; 
} 
     out.flush(); 
     out.close(); 
    } catch (IOException e) { 
     e.getClass(); 
    } 

我得到了我的輸出文件如下:

My Name is Bobby Bob 

X100

每一個後面由一個奇怪的符號。男性標誌,女性標誌等。

我的問題是,它更多的是一個奇怪的。是什麼導致這些奇怪的符號出現?我期待着數字,因爲它數了。這些符號從哪裏來?

+0

@ Marcelo我發佈了所有代碼 – sealz

回答

2

out是一個RandomAccessFile?

我認爲你正在使用寫(字節)而不是寫(字符串),所以你正在寫字節X,請參閱ASCII TABLES表示。

嘗試

write(""+i); 

看着的BufferedWriter的Java API:

http://download.oracle.com/javase/1.4.2/docs/api/java/io/BufferedWriter.html#write(int)

它說,它寫入字符的整數表示,你的理解。

如果你要打印的價值你必須寫因爲這個形象代表: http://www.asciitable.com/index/asciifull.gif

+0

對不起,添加了代碼的部分,我提到 – sealz

+0

漂亮的圖表,謝謝 – sealz

1

當你寫

out.write(i); 

它寫(char) i數量不限我作爲文本。

如果你想寫i多項使用打印

out.print(i); 

out.write(String.valueOf(i)); 

out.write(""+i); 
1

看起來你正在編寫由指定單個字符給定的int值,而不是變量i的字符表示。

1

System.outPrintStreamPrintStream.write(int)方法使用指定的字節值將一個字節寫入輸出流。所以你不寫0到100的整數,你寫0到100的字節。你可能想要print(int)而不是write(int)