2014-07-03 51 views
0

讀取操作以二進制格式讀取源文件,但是寫入操作不是以這種方式寫入。爲什麼程序不在Text.txt中返回二進制數字,因爲它從Image.jpeg複製二進制數字

try 
{ 
    FileInputStream fr=new FileInputStream("Image.jpeg"); 
    FileOutputStream fr1=new FileOutputStream("Text.txt"); 
    int temp=0; 
    while((temp=fr.read())!=-1) 
    {      
     fr1.write(temp);       
    } 
    fr1.close(); 
    fr.close();    
} 
catch(Exception e) 
{ 
    System.out.println(e); 
} 
+0

所以,你要的二進制複製Image.jpeg到TEXT.TXT? – PeterMmm

+0

但如果你打開text.txt,你會看到垃圾試圖看字符 – HaSuKrOnOs

+0

你會得到什麼輸出?你期望得到什麼? – Jules

回答

0

嗯,這可能是因爲您正在從「Image.jpeg」而不是「Desert.jpeg」讀取數據。也可能是您正在寫入「Text.txt」而不是「text.txt」。我也可能是因爲您正在複製jpeg圖像數據字節的字節,並且這將被您的文本編輯程序解釋爲文本,而不是您建議的「二進制」。

我真正想知道的是,你期望在文本文件中看到什麼?

編輯:現在我知道你想要的人類可讀的二進制文件,試試這個:

try 
{ 
    FileInputStream fr=new FileInputStream("Image.jpeg"); 
    FileOutputStream fr1=new FileOutputStream("Text.txt"); 
    PrintWriter out = new PrintWriter(fr1); 
    int temp=0; 
    while((temp=fr.read())!=-1) 
    {      
     out.write(Integer.toBinaryString(temp) + " "); 
    } 
    out.close(); 
    fr1.close(); 
    fr.close(); 
} 
catch(Exception e) 
{ 
    System.out.println(e); 
} 
+0

我期待以二進制數字輸出,因爲讀取操作以二進制格式讀取Image.jpeg。 #Corrections – Gulshan

+0

這是否意味着你想看到二進制數字以二進制格式寫入,如010011101?因爲所有的數字在某種意義上都是二進制的,因爲我們的小數在二進制下表示爲二進制。如果是這樣的話,你應該考慮使用[String.toBinaryString(int)](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toBinaryString(int) )功能。 – SyntaxTerror

+0

我猜輸出的格式應該是100011011,但我在輸出文件中得到了gabage值。 這是「我得到的和我輸出的文件大小與源文件類似的文件大小。」 – Gulshan

相關問題