2016-03-03 113 views
-1

我正在寫一個簡單的幫助類,它從文件中獲取數據,編輯它然後將其寫回爲字節數組。 我遇到的問題發生在寫入文件時,它以某種方式損壞數據,導致我的文件變得無法使用。爲什麼我的輸出文件與原始文件不同?

這裏是我的代碼片段:

FileOutputStream bytewriter = new FileOutputStream(output_file_name); 

byte[] bytedata = Files.readAllBytes(Paths.get("myPath")); 

byte[] result = edited_data.getBytes(); 

bytewriter.write(result); 

bytewriter.close(); 

即使我只是寫的原始數據,而無需編輯回來,輸出文件的不同之處一個十六進制值,以便使用該文件的程序認爲它破壞(我正在使用一個簡單的十六進制編輯器來檢查差異)。

有沒有更簡單/更好的方法來做我想做的事情而不會破壞文件?爲什麼腐敗甚至發生?我嘗試了幾乎每種可能的寫入/讀取文件的組合,每次都會發生。

對不起,長期的問題和拼寫錯誤,任何意見/幫助表示讚賞。祝你有個美好的一天:D

+1

它是什麼類型的文件?這是一個圖像或PDF文件?你應該使用'Binary'模式還是'Text'模式? – user2004685

+1

你是否應該包含一個編碼? –

+0

你是如何從'bytedata'到'edited_data'的? –

回答

0

謝謝你們的幫助,我終於解決了這個問題。問題是我在寫入數據之前沒有指定任何編碼。下面的這一行解決了這個問題:

byte result[] = edited_data.getBytes(StandardCharsets.ISO_8859_1); 

輸出不再損壞,一切都按我的意圖工作。 :D

+0

您從未在您的問題中提及過「edited_data」是什麼以及您是如何創建它的,您沒有回覆@ Ulrich關於它的問題。換句話說,你發佈了一個問題,只有你可以解決,因爲你沒有提到對解決問題至關重要的信息。 –

相關問題