为什么文件没有删除? I / O

时间:2013-10-14 12:26:11

标签: java encryption io

你好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();应该删除文件吗?我对吗?但它不会工作, 请指教, 谢谢。

2 个答案:

答案 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);
}