2010-12-14 83 views
0

對於一個類項目,我和一個團隊一直在研究一個應用程序,該應用程序從文本文件中讀取文本行並可以對其進行加密,解密(都使用DES),以及計算一個MD5哈希。該程序讀取文本並加密它就好了,將現在加密的字符串數組按照讀取順序寫回到文本文件中,並逐行寫入所有必需的回車符。Java:將數組寫入文本文件不一致

但是,解密這些字符串時,程序將純文本全部寫入文件,並且不會有空格或回車符。加密和解密方法都使用相同的fileWrite類,它使用緩衝寫入器。爲了調試目的,我添加了一個System.out.println語句來打印出數組內容,因爲它們正在被加密和解密以檢查存儲器中的錯誤,但是我找不到任何內容。

即使當我通過「\ n」符號人爲插入回車時,文本文件在解密後全部爲一行。我不能爲我的生活弄清楚爲什麼同一個班級在不同的時間會以兩種不同的方式行事。將數組寫入文件的代碼很簡單,只是逐個元素地進行,可能並不需要包含在內,但無論如何它都是。

for(int i=0;i<s.length;i++){ 
    bufferedWriter.write(s[i]);    
    } 

據我所知,這個問題有可能從Java和記事本怎樣不同的方式處理新行造成的。當它從文件中讀取純文本字符串時,我假設它從文本文件接收到換行符並以這種方式打印出加密文本,但是這裏的java表示一個新行與原來在文件中不同,當這些加密的行被讀取和處理時,導致這個間距問題,但是我再也不確定了,這就是我來到這裏的原因。任何幫助,將不勝感激。

+0

請編輯您的問題,以創建一些格式的段落也許。閱讀你的文字牆很難。 – jjnguy 2010-12-14 14:47:35

回答

3

嘗試使用PrintWritter(如果可以)使用方法println()。

我相信write()方法不會更改行,您可以使用newLine()方法強制執行該操作。

還要小心,從文件中讀取大多數方法不會返回換行符。

1

我的猜測是,你正在使用BufferedReader(它刪除換行符),並寫回字符串的讀取而不嘗試重建換行符。 (或者添加換行符不起作用,因爲你說他們不在這裏)

而不是使用BufferedReader,你最好把文件當作二進制文件,一次讀取塊,如果它碰巧是文本,它會保持不變。對於文本,您無法保證\ r \ n或\ n或\ r將會像原始文件一樣被重新創建。如果您對不同系統上的文本進行編碼和解碼,則字符編碼可能不同。 ;)

-1

也許你忘記沖洗和/或關閉作家在最後?