我遇到了问题,但还没有解决。让我分享我到目前为止所做的事情。我尝试使用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);
}
答案 0 :(得分:0)
String directory = fileDirectory+ "//" + fileName;
这不是目录和文件名之间使用的正确分隔符,但它似乎也可以正常工作。
这意味着问题不是分隔符,而是用于生成路径的代码与此代码之间的不匹配。您正在将目录生成到除此指向之外的其他位置。