2012-11-29 37 views
1

我想用這段代碼寫點東西,但是在我運行之後,字符之間有空白。但在代碼中,我不給空間的字符串。java.io FileOutPutStream - 字符之間有空白。爲什麼?

import java.io.*; 

public class WriteText{ 

public static void main(String[] args) { 

FileOutputStream fos; 
DataOutputStream dos; 

try { 

    File file= new File("C:\\JavaWorks\\gui\\bin\\hakki\\out.txt"); 
    fos = new FileOutputStream(file); 
    dos=new DataOutputStream(fos); 

    dos.writeChars("Hello World!"); 
} 

catch (IOException e) { 
    e.printStackTrace(); 
} 

} 

} 

輸出是(以文本文件):H e l l o W o r l d !

回答

5

使用writeBytes

dos.writeBytes("Hello World!"); 

從本質上講,writeChars將每一個字寫爲2個字節。第二個你看到額外的空間。

+0

我也是這樣。仍然試圖瞭解'writeChars'的用途是什麼...... – PearsonArtPhoto

+1

Java docs說:「將字符串s中的每個字符寫入輸出流,依次爲每個字符兩個字節,如果s爲null,則NullPointerException爲如果s.length爲0,則不寫入字符,否則首先寫入字符s [0],然後寫入s [1],依此類推;寫入的最後一個字符是s [s.length-1] 。對於每個字符,實際上都是寫入兩個字節,首先是高位字節,與writeChar方法完全相同。「誰想要額外的一點。我認爲很大的問題。 – hakiko

+1

writeChars的目的是unicode支持。 – BevynQ

1

您也可以使用FileWriter和BufferedWritter;當你完成它時,不要忘記關閉你的緩衝區或者dos。

 FileWriter file; 
     BufferedWriter bw = null; 

    try { 

     file = new FileWriter("C:\\JavaWorks\\gui\\bin\\hakki\\out.txt"); 
     bw = new BufferedWriter(file); 

     bw.write("Hello World!"); 
    } 

    catch (IOException e) { 
     e.printStackTrace(); 
    } 

    finally{ 
     try{ 
      bw.close(); 
     } 

     catch(IOException e){ 
      e.printStackTrace(); 
     } 
    } 
+2

謝謝,這對我來說是另一個很好的解決方案。 – hakiko

相關問題