java.nio.файл.Исключение файловой системы: C:p12dummy.p12: Процесс не может получить доступ к файлу, так как он используется другим процессом

#java #spring #spring-boot #nio #filesystemexception

Вопрос:

У меня есть функция загрузки файлов p12 со следующим кодом:

 -  

Затем я хочу создать функцию для удаления файла p12 со следующим кодом:

 -  

И когда я запускаю результат, появляется ошибка:

 java.nio.file.FileSystemException: C:p12dummy.p12: The process cannot access the file because it is being used by another process.  

Есть ли способ успешно удалить файл?

ОБНОВЛЕНИЕ : Я обнаружил проблему, по-видимому, потому, что в этой функции используется файл p12:

 -  

Есть ли способ по-прежнему иметь возможность удалить файл p12?

Ответ №1:

Исключение говорит вам, что есть другой процесс, в котором файл открыт, и поэтому он не может быть удален. Взгляните на свои системные процессы (скорее всего, приложения) в Windows и посмотрите, в каком приложении открыт файл. У вас есть файл, открытый в текстовом редакторе, таком как блокнот, или в командной строке? Вы должны закрыть его там, прежде чем его можно будет удалить.

Вы открываете файл

 InputStream keyStoreStream = new FileInputStream(fileDir);  

но ресурс никогда не закрывается. Заключите соответствующие части в блок «Попробуйте с ресурсами».

 Maplt;String, Stringgt; certSn; try (InputStream keyStoreStream = new FileInputStream(fileDir)) {  certSn = = getP12Cert(keyStoreStream, passphrase.getPassphrase());  // set up your assigneeModel here } catch (IOException e) {  // TODO throw or handle the exception however you need to }  // rest of code here  

Комментарии:

1. Я ничего не буду открывать. Похоже, что файл используется в другой функции. Но я не знаю, где именно. Есть ли способ остановить запущенный процесс?

2. Я обновил свой вопрос, я включил функцию, для которой требуется файл p12. Можете ли вы проверить и дать мне решение. Я был бы очень признателен.

3. Я рад, что это помогло вам, но почему вы удалили весь код, который опубликовали? Этот вопрос может быть полезен другим людям.