2010-12-14 7 views
0

クラスプロジェクトでは、グループと私は、テキストファイルからテキスト行を読み込んで暗号化し、解読する(DESを使用する)ことができます。 MD5ハッシュを計算する。プログラムはテキストを読み込んで暗号化し、暗号化された文字列の配列をテキストファイルに書き込んだり、すべての必要なキャリッジリターンを1行ずつ読み込んだりします。Java:配列をテキストファイルに書き込む矛盾

ただし、これらの文字列を復号化するときに、プログラムはプレーンテキストをスペースやキャリッジリターンのない1行にすべてファイルに書き込みます。 encryptメソッドとdecryptメソッドはどちらも、バッファ付きライターを使用する同じfileWriteクラスを使用します。私はSystem.out.printlnステートメントをデバッグ目的のために追加しました。これは、配列の内容を暗号化して解読してストレージ内のエラーをチェックするために出力しますが、見つけられません。

「\ n」記号を使用して人工的にキャリッジリターンを挿入しても、テキストファイルは復号化された後はすべて1行になります。なぜ私は同じクラスが異なる時間に2つの異なる方法で行動するのか理解できません。配列をファイルに書き込むコードは単純ですが、要素ごとに処理するだけで、おそらく実際にはインクルードする必要はありませんが、これはとにかくです。私が集めることができるものから、

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

、問題が潜在的にJavaとメモ帳が異なり、新しい行を処理する方法に由来します。ファイルから平文の文字列を読み込んでいるとき、私はそれがテキストファイルから改行を受け取り、この方法で暗号化されたテキストを出力すると仮定していますが、ここでjavaは、これらの暗号化された行が読み込まれて処理されるときにこのスペースの問題につながりますが、やはり私は本当に確実ではないので、私はここにいます。どんな助けもありがとう。

+0

質問を編集して、段落をいくつかの書式で作成してください。あなたの壁を読むのはとても難しいです。 – jjnguy

答えて

3

可能であれば、println()メソッドを使用して、PrintWritterを使用してみてください。

私はwrite()メソッドが行を変更しないと思うので、newLine()メソッドを使って強制することができます。

ファイルから読み込むときに、ほとんどの方法で改行が返されないように注意してください。

1

私は、改行文字を削除するBufferedReaderを使用していて、改行を再構築しようとせずに文字列の読み込みを書き戻していると思います。 (または、改行を追加すると、それらがここにないと言って動作しません)

BufferedReaderを使用する代わりに、ファイルをバイナリとして処理し、一度にブロックを読み込むほうがよいでしょう。変わらない。テキストでは、元のファイルにあるように、\ r \ nまたは\ nまたは\ rを返す方法がありません。異なるシステム上でテキストをエンコードしてデコードすると、文字のエンコーディングが異なる場合があります。 ;)

-1

最終的にWriterをフラッシュしたり閉じるのを忘れたのかもしれませんか?

関連する問題