我目前正在寫一個加密程序,用64位加密加密文本文檔。它的工作方式是它需要一個字符串,並對字符串進行加密。我正在尋找一種方法讓程序將文件的所有內容存儲在一個字符串中,對字符串進行加密,然後用加密的字符串覆蓋文件。然而,使用如何一次讀取或替換多個文件行?
while((bufferedReader.readLine()) != null) {
...
}
它只讀取和加密第一行,其餘部分保持不變。
然而,使用:
List<String> lines = Files.readAllLines(Paths.get(selectedFile.toString()),
Charset.defaultCharset());
for (String line : lines) {
...
}
僅最後一行被加密。我真的不知道該做什麼,因爲我有點想法。
這裏是我當前的代碼(也只追加到文件,因爲我嘗試新的東西。):
public static void Encrypt() throws Exception {
try {
FileWriter fw = new FileWriter(selectedFile.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
List<String> lines = Files.readAllLines(Paths.get(selectedFile.toString()),
Charset.defaultCharset());
for (String line : lines) {
System.out.println(line);
System.out.println(AESencrp.encrypt(line));
bw.write(AESencrp.encrypt(line));
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
這是第一件事我試過一個加密的文本,但我不能想出一個辦法,使文件只作家替換它正在閱讀的整條線。例如,FileWriter會追加並僅添加加密,在FileWriter完全刪除文件的其餘部分之前,只加密第一行。這就是爲什麼我希望有一種方法可以同時讀取整個文檔並將整個文件存儲在字符串中。 –
您需要寫入臨時文件,一旦競爭並關閉流,您將刪除舊文件並在其位置重命名新文件。同時讀取和寫入文件非常困難 – MadProgrammer