multipartFile.transferTo(file)报java.nio.file.FileAlreadyExistsException怎么解决
时间: 2024-04-12 19:30:14 浏览: 188
解决java enctype multipart form-data文件上传传值问题
5星 · 资源好评率100%
当使用`transferTo()`方法将MultipartFile对象保存到目标文件时,如果目标文件已经存在,会抛出`java.nio.file.FileAlreadyExistsException`异常。
要解决这个问题,你可以考虑以下几种方法:
1. 删除目标文件:在调用`transferTo()`方法之前,先判断目标文件是否存在,如果存在则删除。可以使用`Files.deleteIfExists(Path path)`方法来删除文件。
```java
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
// ...
Path destPath = Path.of("目标文件路径");
if (Files.exists(destPath)) {
Files.delete(destPath);
}
multipartFile.transferTo(destPath.toFile());
```
2. 使用不同的目标文件名:如果不要求使用相同的文件名保存上传的文件,可以为每个上传的文件生成一个唯一的文件名,避免文件重名。
```java
import java.util.UUID;
import org.apache.commons.io.FilenameUtils;
// ...
String originalFilename = multipartFile.getOriginalFilename();
String extension = FilenameUtils.getExtension(originalFilename);
String newFilename = UUID.randomUUID().toString() + "." + extension;
Path destPath = Path.of("目标文件夹路径", newFilename);
multipartFile.transferTo(destPath.toFile());
```
3. 覆盖目标文件:如果允许覆盖已存在的目标文件,可以使用`StandardCopyOption.REPLACE_EXISTING`选项来覆盖。
```java
import java.nio.file.StandardCopyOption;
// ...
Path destPath = Path.of("目标文件路径");
multipartFile.transferTo(destPath.toFile(), StandardCopyOption.REPLACE_EXISTING);
```
根据你的具体需求,选择适合的解决方法来处理`java.nio.file.FileAlreadyExistsException`异常。
阅读全文