我正在加密我的程序中的文件并在我的桌面上创建一个无扩展名的文件,它对txt完全有效,但是像pdf,rtf这样的扩展会弹出错误消息。我正在尝试为要创建的选定文件获取完全相同的文件名。
runEncrypt.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
File inputFile = new File(selectedFile.getAbsolutePath());
File encryptedFile = new File("/Users/aktasberk/Desktop/E_"+selectedFile.getName());
try {
String key = "16BitKeyIsHere16";
CryptoUtils.encrypt(key, inputFile, encryptedFile);
// CryptoUtils.decrypt(key, encryptedFile, decryptedFile);
} catch (CryptoException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
});
正如您所看到的,我将“E_ + selectedFile.getname()”用于工作,我应该怎么做才能获得没有“E_”的文件名,并仍在桌面上创建文件。
谢谢!
答案 0 :(得分:1)
像txt这样的文件扩展名是纯文本,只保存包含的文本。 pdf文件包含您在pdf查看器中看不到的其他数据,例如元数据,因此当您尝试打开已加密的文件* .pdf时,内部数据的格式会发生变化,请不要遵循pdf风格,所以口译员无法正确阅读。
例如,如果pdf格式需要一个类似&#34;字母大小&#34;的字段,当您加密文件时它转换为AsG45,查看者无法读取它并检测到文件已损坏< / p>
在您的情况下,如果要在桌面上保存后进行解密,则可以将文件命名为E_extension_fileName。有了这个,你可以在将来解密文件,并知道原始文件的扩展名