java - 动态生成文件路径时不删除文件
问题描述
我面临一个问题,但还没有解决它。让我分享一下我到目前为止所做的事情。我尝试使用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);
}
解决方案
String directory = fileDirectory+ "//" + fileName;
这不是在目录和文件名之间使用的正确分隔符,尽管它似乎也可以。
这意味着问题不在于分隔符,而在于用于生成路径的代码与此代码之间的不匹配。您正在将目录生成到其他地方而不是指向的地方。
推荐阅读
- python - 熊猫 | 分组方式,组的所有值以逗号分隔
- android - Android Admob 错误代码 0
- node.js - _http_server.js:190 throw new RangeError(`无效的状态码:${originalStatusCode}`); 在节点js中?
- php - PHP 打印数组中数组的所有对象
- java - 如何通过 Java DTO 将嵌入式 JSON 对象表示为字符串
- jquery - 加载器 gif 在 jQuery 中无法正常工作
- javascript - 在 IDE 中为 jsx 代码流“意外令牌 <”
- c# - 使用 T4 为代理的 ASP.NET Web API 创建 C# 模型类
- ios - 将小数添加到计算器应用程序 swift 4
- python - 使用 Jupyter 在 Python 上安装 Facebook 聊天模块