Моя проблема заключается в том, что во время импорта XML-текста текстовых данных в мое приложение (javafx) через файл OutputStream байтов из XML создаются файлы, хранящиеся в папке «temp», сбрасываются и закрываются, но они не может быть удалено, если приложение не закрыто.
Это довольно простой код удаления. Я делаю .flush () и .close () файлы после создания. Они не открыты, просто созданы. Приложение перейдет в папку «temp» и удалит все файлы внутри. Код удаления работает в независимом тестировании, но не во время работы приложения. Я думаю, что код удаления в порядке, проблема заключается в получении файлов для выпуска. Я исследовал, что правильно создаю и закрываю файл (ы), и удаление кода кажется достаточно простым Поэтому я не уверен, почему они до сих пор не выпущены для удаления.
Этот код создает файлы и записывает их в папку «temp». Это массив для каждого имени файла и строка данных файла, преобразованная в байты, которая создает файл (ы):
String[] ary = f.split("\\*", 2);
OutputStream os = null;
try {
String filePath = GlobalVariables.TEMP + ary[0];
byte[] bytes = ary[1].getBytes();
os = new FileOutputStream(new File(filePath));
os.write(Base64.getDecoder().decode(bytes));
os.flush();
os.close();
files.add(new NoteFile(ary[0], filePath));
} catch(IOException io) {
io.printStackTrace();
} finally {
try {
if(os != null) os.close();
System.gc();
} catch(IOException io){
LoggerWrapper.getInstance().myLogger.fine("ResearchController.loadImportedDataToDB cannot release files");
}
}
Этот код «пытается» удалить файлы, содержащиеся в папке «temp» во время очистки, если в XML-файле были файлы.
if(n.containsKey("File")){
File file = new File(GlobalVariables.TEMP);
String[] myFiles;
if(file.isDirectory()){
myFiles = file.list();
for (String s : myFiles) {
File myFile = new File(file, s);
myFile.delete();
}
}
}
Цель состоит в том, чтобы иметь возможность обмениваться информацией и файлами между пользователями этого приложения. Итак, файлы импортируются / экспортируются через XML с использованием Base64. При импорте файлы создаются и закрываются - и по усмотрению пользователя прикрепляются и сохраняются в виде байтовых данных в базе данных. После того, как файлы сохранены в базе данных, приложение должно очистить (удалить) файлы, хранящиеся в папке «temp», независимо от того.