springboot将文件插入到指定路径文件夹,判断文件是否存在以及根据名称删除

解决方案:

直接使用File和数据流实现

1.插入这个是我自己的业务我是将文件转成pdf之后存入指定路径了这个路径是直接定义在了yml里然后在需要的地方注入调用,然后通过file创建空白pdf放到数据流通过:aspose的方法保存

复制代码
file:
  upload:
    dir: D:/data/uploads       # 通用文件上传目录
    pdfDir: D:/data/uploadPDF  # PDF文件专用目录
    dowFile: C:\Users\Lenovo\Desktop #下载路径
复制代码
@Value("${file.upload.pdfDir}")
private String uploadDirPDF;
String fullSourcePath = uploadDir + File.separator + fileName;
String fullPdfPath = uploadDirPDF + File.separator + pdfFileName;
复制代码
public static void docToPdf(String sourcerFile,String targetFile) {
    if (!getLicense()) {// 验证License 若不验证则转化出的pdf文档会有水印产生
        return;
    }
    try {
        long old = System.currentTimeMillis();
        File file = new File(targetFile);  //新建一个空白pdf文档
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
        Document doc = new Document(sourcerFile);                    //sourcerFile是将要被转化的word文档
        doc.save(out, SaveFormat.PDF);//全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
        out.close();
        long now = System.currentTimeMillis();
        System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时
    } catch (Exception e) {
        e.printStackTrace();
    }
}


2.判断文件是否存在
获取路径传入file即可然后调用exists返回来的内容就可以实现
File pdfDir = new File(uploadDirPDF);
if (!pdfDir.exists() && !pdfDir.mkdirs()) {
    fileData.setRemark("无法创建PDF目录: " + uploadDirPDF);
    return fileData;
}

3.根据名称删除文件
先将数据库的内容删除,数据库删除没有错误成功后删除文档,将名称和路径传入到方法里调用file.delete即可
@RequestMapping("/delMenusTree")
public R delMenusTree(@RequestBody MenuDeleteDTO menuDeleteDTO){
    String msg= biddingtoolsoftwareService.delMenusTree(menuDeleteDTO.getId());
    if (msg.equals("删除成功")){
        String mlname = menuDeleteDTO.getMlname();
        deleteFileIfExists(uploadDir, mlname);
        deleteFileIfExists(uploadDirPDF, mlname);
    }
    return R.ok(msg);
}
private void deleteFileIfExists(String directory, String fileName) {
    if (fileName == null || fileName.isEmpty()) {
        return; // 避免空文件名导致异常
    }

    File file = new File(directory, fileName);
    if (file.exists() && file.isFile()) {
        if (file.delete()) {
            log.info("成功删除文件: {}", file.getAbsolutePath());
        } else {
            log.error("删除文件失败: {}", file.getAbsolutePath());
            // 可以选择记录日志或返回更详细的错误信息
        }
    }
}
相关推荐
斯维赤3 分钟前
微信步数的10点定时推送,看似简单,实则暗藏玄机
java·后端
RobinDevNotes3 分钟前
crontab 管不住时,该上 Airflow 了
后端
Linux_cy10 分钟前
服务器管理方案选型:面板 / SSH 客户端 / 桌面型客户端怎么选
java·linux·运维·服务器·ssh·可视化·gmssh
系统集成-鹰翔10 分钟前
ERP接口月度统计少了零单月份:SQLite分组与最近三个月均值排查
javascript·数据库·经验分享·后端
我的xiaodoujiao33 分钟前
Django 权限系统项目实战详细图文教程 3--系统登录功能实现
后端·python·django
可乐_不渴35 分钟前
【Linux】 进程虚拟地址空间
java·linux·javascript
SimonKing37 分钟前
号外号外,Stream-Nexus推送项目支持集群部署了
java·后端·程序员
老王IT37 分钟前
Rust开发环境搭建教程
开发语言·后端·rust
武子康41 分钟前
HunyuanVideo-1.5 跑得更快,先减步数还是开缓存?
人工智能·后端·agent
chenbingjie_c1 小时前
C++ 模板进阶:从 “会用“ 到 “懂底层“(非类型参数・特化・分离式编译)
c++·后端