2013-04-30 94 views
0

我向文本文件寫入了數據,但文件中的數據不正確。我認爲這是OutpubStream的問題,因爲我在前面的步驟中顯示數據,並且它們是正確的。來自OutputStream(Java)的文件中的數據輸入不正確

private void Output(File file2) { 
    // TODO Auto-generated method stub 
    OutputStream os; 
    try { 
     os = new FileOutputStream(file2); //file2-it is my output file, all normal with him 
     Iterator<Integer> e=mass.iterator(); 
     int r=0; 
     while(e.hasNext()){ 
      r=e.next(); 
      System.out.println(r);//display data-all be correct 
     os.write(r);//I think problem create in this step/ 
     } 
     os.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

輸入數據FILE1.TXT FILE2.TXT

3 strahge tokens plus !-68DU 

感謝答案

10 
56 
2 
33 
45 
21 
15 
68 
54 
85 

輸出數據,原諒我的英語。

+2

我看了你的問題,大約3次,我仍然不知道什麼是所需的輸出 – 2013-04-30 16:30:39

+0

難道是一個字節順序標記? – Fildor 2013-04-30 16:40:03

回答

-1

你可以考慮轉化的字符串轉換成字節碼:

System.out.println(r);// display data-all be correct 
String line = (String.valueOf(r) + "\n"); 
os.write(line.getBytes()); 
+0

我認爲輸入的輸出 ... 那麼,爲什麼不把數據轉換成字符串,然後寫出它的字節呢 – fGo 2013-04-30 17:09:19

+0

謝謝,這是接近真實的。在這個例子中,我只想使用Java內部方法。 – Vakhrushev 2013-04-30 17:25:54

+0

爲什麼要投票? – fGo 2013-05-23 11:39:52

0

使用FileWriter的,而不是作爲FileOutputStream中你的數據是文本,你可能想使用字符

2

os.write(r); 

寫入整數r的二進制值到文件的流。

使用類似:

os.write(String.valueOf(r)); 

,你可能希望新行:

os.write(String.valueOf(r)+"\n"); 
1

FileOutputStream用於寫入二進制原始數據。如文件中所述:

FileOutputStream用於寫入諸如 圖像數據的原始字節流。中寫入字符流,請考慮使用 FILEWRITE

既然你寫整數,該文件,因此你需要的是像PrintWriter文本輸出流。它可以在你的代碼中使用如下:

PrintWriter pw = new PrintWriter(file2); //file2-it is my output file, all normal with it 
Iterator<Integer> e=mass.iterator(); 
int r=0; 
while(e.hasNext()){ 
    r=e.next(); 
    pw.print(r); 
    pw.println();//for new line 
} 
pw.close(); 
相關問題