0

大家好,我有一种方法可以在我的应用程序中加密文件,我想加密文件并删除源我尝试过这样但它不起作用..?

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

4

2 回答 2

2

要么有一个针对该文件打开的输入流,要么没有给出完整的文件名(连同路径)。这是查找不删除的实际原因的原因delete()方法File不是那么有用。如果您查看其文档

删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能被删除。请注意,Files 类定义了 delete 方法以在无法删除文件时抛出 IOException。这对于错误报告和诊断无法删除文件的原因很有用。

因此,这里有一些建议可以帮助您找到根本原因。使用Files.delete()方法进行删除。

抛出:

NoSuchFileException - 如果文件不存在(可选的特定异常)

DirectoryNotEmptyException - 如果文件是一个目录并且因为目录不为空而不能被删除(可选的特定异常)

IOException - 如果发生 I/O 错误

SecurityException - 如果是默认提供程序,并且安装了安全管理器,则会调用 SecurityManager.checkDelete(String) 方法来检查对文件的删除访问权限

看到它抛出的异常,你就可以弄清楚根本原因是什么。

于 2013-10-14T12:33:54.150 回答
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);
}        
于 2013-10-14T12:32:26.553 回答