动态生成文件路径时不会删除文件

时间:2018-05-23 05:18:09

标签: java file spring-boot

我遇到了问题,但还没有解决。让我分享我到目前为止所做的事情。我尝试使用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.FileUtilsjava.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 :(得分:0)

String directory = fileDirectory+ "//" + fileName;

这不是目录和文件名之间使用的正确分隔符,但它似乎也可以正常工作。

这意味着问题不是分隔符,而是用于生成路径的代码与此代码之间的不匹配。您正在将目录生成到除此指向之外的其他位置。