Файл не удаляется, когда путь к файлу генерируется динамически - PullRequest
0 голосов
/ 23 мая 2018

Я столкнулся с проблемой, но пока не могу ее решить.Позвольте мне поделиться тем, что я сделал до сих пор.Я пытался удалить файл, используя java.nio.file пакеты.И ниже мой код.

// directory will be dynamically generated.
String directory = fileDirectory+ "//" + fileName;
Path path = Paths.get(directory);
if (Files.exists(path)) {
    Files.delete(path);
}

Я правильно сгенерировал путь.Но когда Files.exists(path) называет это return false.Поэтому файл не удаляется.Но если я сгенерировал directory string жестко запрограммированным, то он отлично работает.

// hard-coded directory works perfectly.
String directory = "C://opt//tomcat//webapps//resources//images//sprite.jpg";

Я также попробовал другой метод Files.deleteIfExists(path);.Которые проверяют наличие файла и удаляют файл.

Другие пакеты org.apache.commons.io.FileUtils и java.io.File пытались.Но не могу решить проблему.

Примечание: Мое приложение в spring-boot.И я прочитал каталог из файла application.properties как для сохранения изображений, так и для удаления изображений.

РЕДАКТИРОВАТЬ:

загрузка файла Я имею в виду сохранить в каталоготлично работает.Но удаление файла не работает.

application.properties

image.root.dir=images
image.root.save.dir=C:/opt/tomcat/webapps/resources/

в файле реализации

@Value("${image.root.dir}")
private String UPLOADED_FOLDER;

@Value("${image.root.save.dir}")
private String saveDir;

String directory = saveDir + UPLOADED_FOLDER + "/" + fileName;

сохранить файл в каталоге

String directory = saveDir + UPLOADED_FOLDER + "/";
try {
    byte[] bytes = file.getBytes();
    Path path = Paths.get(directory);
    if (!Files.exists(path)) {
        Files.createDirectories(path);
    }
    path = Paths.get(directory, file.getOriginalFilename());
    Files.write(path, bytes);
} catch (IOException e) {
        logger.error("save image into directory : " + e);
}

1 Ответ

0 голосов
/ 23 мая 2018
String directory = fileDirectory+ "//" + fileName;

Это не правильный разделитель, используемый между каталогом и именем файла, хотя, похоже, он также работает.

Это означает, что проблема не в разделителе, а в несоответствии кодачто вы используете для генерации пути и этот код.Вы создаете каталог где-то еще, а не там, куда он указывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...