2013-10-14 4 views
0

hello guyz У меня есть метод, который шифрует файлы в моем приложении, я хотел зашифровать файл и удалить исходный код, который я попробовал, но он не работает.?Почему файл не удаляется? I/O

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

Вызывает ли это исключение? – Fildor

+2

Открыт ли InputStream в отношении того же файла? –

+0

@Fildor Нет исключений, когда я помещаю 'f.delete();' в 'System.out.println (f.delete());' он печатает false .. – user2136160

ответ

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); 
}   
2

Либо есть входной поток, открытый против этого файла, либо полное имя файла не указывается (вместе с путём). По этой причине delete() метод File не так полезен, чтобы найти фактическую причину не удалять. Если вы посмотрите на его docs

Удаляет файл или каталог, обозначенные этим абстрактным путем. Если это имя пути обозначает каталог, то каталог должен быть пустым в , чтобы его можно было удалить. Обратите внимание, что класс Files определяет метод delete , чтобы исключить IOException, когда файл не может быть удален. Это полезно для сообщений об ошибках и для диагностики того, почему файл не может быть удален .

Итак, вот совет, который поможет вам найти первопричину. Используйте метод Files.delete() для удаления.

Броски:

NoSuchFileException - если файл не существует (по желанию конкретного исключения)

DirectoryNotEmptyException - если файл является каталогом и не мог бы быть удален из-за директории не является пустым (необязательное конкретное исключение)

IOException - если произошла ошибка ввода-вывода

SecurityException - В случае провайдера по умолчанию, и менеджер в безопасности установлен, SecurityManager.checkDelete (String) метод вызывается для проверки удаления доступа к файлу

Видя исключение его бросает, вы можете понять, что является основной причиной.

Смежные вопросы