Почему не удаляется папка Java посредством метода delete()
Имеется такая ситуация. Есть папка, в которой проводятся действия. После этого папка переименовывается. Далее ее следует удалить. Однако метод delete() возвращает false. С чем связана проблема. Никакие файлы из этой папки не открыты на компьютере. Привожу код ниже:
import java.io.*;
import java.util.Objects;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FolderCreator {
private static final String FOLDER_PATH = "D:\\JavaStudy\\";
private static final String FOLDER_NAME = "folder";
private static final String ZIP_NAME = "\\output.zip";
private static final String NEW_FOLDER_NAME = "folder_new";
public static void main(String[] args) {
File folder = new File(FOLDER_PATH + FOLDER_NAME);
if (!folder.exists())
folder.mkdir();
try (FileOutputStream fos1 = new FileOutputStream(FOLDER_PATH + FOLDER_NAME + "\\file1");
FileOutputStream fos2 = new FileOutputStream(FOLDER_PATH + FOLDER_NAME + "\\file2");
FileOutputStream fos3 = new FileOutputStream(FOLDER_PATH + FOLDER_NAME + "\\file3");
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(FOLDER_PATH + FOLDER_NAME + ZIP_NAME));
FileInputStream fin1 = new FileInputStream(FOLDER_PATH + FOLDER_NAME + "\\file1");
FileInputStream fin2 = new FileInputStream(FOLDER_PATH + FOLDER_NAME + "\\file2");
FileInputStream fin3 = new FileInputStream(FOLDER_PATH + FOLDER_NAME + "\\file3")) {
fos1.write("Some Content1".getBytes());
fos2.write("Some Content2".getBytes());
fos3.write("Some Content3".getBytes());
zos.putNextEntry(new ZipEntry("file1"));
byte[] buf = new byte[200];
fin1.read(buf);
zos.write(buf);
zos.closeEntry();
zos.putNextEntry(new ZipEntry("file2"));
fin2.read(buf);
zos.write(buf);
zos.closeEntry();
zos.putNextEntry(new ZipEntry("file3"));
fin3.read(buf);
zos.write(buf);
zos.closeEntry();
} catch (IOException e) {
System.out.println("Упс, ошибочка :)");
throw new RuntimeException(e);
}
File newFolder = new File(FOLDER_PATH + NEW_FOLDER_NAME);
boolean flag = folder.renameTo(newFolder);
for (File file : Objects.requireNonNull(newFolder.listFiles())) {
System.out.println(file.getPath());
}
boolean b = newFolder.delete();
}
}