2013-06-04 115 views
3

我正在解析文件。我正在創建一個新的輸出文件,並且必須向其添加'byte []數據'。從那裏我需要將許多其他'byte []數據附加到文件的末尾。我想我會讓用戶爲輸出文件名添加一個命令行參數,因爲我已經有了它們提供了我們解析的文件名。這就是說,如果文件名尚未在系統中創建,我覺得我應該生成一個。將字節[]附加到二進制文件的末尾

現在,我不知道如何做到這一點。我的程序目前使用DataInputStream來獲取和解析文件。我可以使用DataOutputStream追加嗎?如果是這樣,我想知道如何追加到文件而不是覆蓋。

+1

關鍵的是你如何打開文件。您必須打開追加與簡單輸出。 –

回答

16

如果是這樣,我想知道如何追加到文件,而不是覆蓋。

這很容易 - 而且你甚至不需要DataOutputStream。只是FileOutputStream是好的,使用the constructor with an append parameter

FileOutputStream output = new FileOutputStream("filename", true); 
try { 
    output.write(data); 
} finally { 
    output.close(); 
} 

或者使用Java 7的try-with-resources

try (FileOutputStream output = new FileOutputStream("filename", true)) { 
    output.write(data); 
} 

如果需要DataOutputStream出於某種原因,你可以換用同樣的方法打開一個FileOutputStream

+0

非常感謝!第二個真實的參數是我假設的上一個選項?剛剛檢查過,喲! –

+0

@johnstamos:是的 - 按照答案中的鏈接。 –

0
File file =new File("your-file"); 
FileWriter fileWritter = new FileWriter(file.getName(),true); 
BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
bufferWritter.write(your-string); 
bufferWritter.close(); 

把這個放在try - catch塊中。

+3

這對文本很好,但不是二進制。 –

2
Files.write(new Path('/path/to/file'), byteArray, StandardOpenOption.APPEND); 

這是用於字節附加。不要忘了例外

+2

歡迎來到SO,感謝您提供答案。這是在低質量的帖子隊列中進行審查的原因,因爲它只是一個代碼唯一的答案,我們並不真的喜歡這些。如果你想加入進來,那麼你是受歡迎的,但你必須在你的答案中多加一點努力。我們希望代碼被解釋爲如何解決OP的問題。如果你喜歡,你可以閱讀[問]和[答案]清除一些事情。 Ty爲你的時間。 –

相關問題