你好manz我有一个加密我的应用程序中的文件的方法,我想加密文件和删除源我试过这样但它不会工作..?
public static void encrypt(String password, InputStream is, OutputStream os,String DelFile) throws Exception {
SecretKeySpec keySpec = new SecretKeySpec(password(password), "TripleDES");
Cipher cipher = Cipher.getInstance("TripleDES");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] buf = new byte[8096];
os = new CipherOutputStream(os, cipher);
int numRead = 0;
while ((numRead = is.read(buf)) >= 0) {
os.write(buf, 0, numRead);
}
os.close();
// file deleting part...
File f = new File(DelFile);
f.delete();}
这个f.delete();
应该删除文件吗?我对吗?但它不会工作,
请指教,
谢谢。
答案 0 :(得分:2)
对该文件打开一个输入流,或者没有给出完整的文件名(以及路径)。这就是delete()
File
方法找不到不删除的实际原因的原因。如果你看一下docs
删除此抽象路径名表示的文件或目录。如果 此路径名表示一个目录,然后该目录必须为空 要删除。请注意,Files类定义了删除 无法删除文件时抛出IOException的方法。这是 对于错误报告和诊断文件无法解释的原因很有用 删除。
以下是帮助您找到根本原因的建议。使用Files.delete()方法删除。
<强>抛出:强>
NoSuchFileException - 如果文件不存在(可选的特定 例外)
DirectoryNotEmptyException - 如果文件是目录而且 否则无法删除,因为该目录不为空 (可选特定例外)
IOException - 如果发生I / O错误
SecurityException - 对于默认提供程序,以及a 安装了安全管理器,SecurityManager.checkDelete(String) 调用方法来检查对文件的删除访问
看到它抛出的异常,你可以弄清楚根本原因是什么。
答案 1 :(得分:0)
管理员权限? 是否引发例外?如果是的话,抓住它。
try {
Files.delete(path);
} catch (NoSuchFileException x) {
System.err.format("%s: no such" + " file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
System.err.format("%s not empty%n", path);
} catch (IOException x) {
// File permission problems are caught here.
System.err.println(x);
}