如何消除 Result of ‘file.delete()‘ is ignored

今天在项目中开发文件导出时,使用了临时文件,当临时文件用完后为了减少存储占用,因此需要将临时文件删除,使用文件删除方法“file.delete()” ,会出现编辑器提示“'File.delete()'的结果将被忽略”(会导致文件删除是有时成功有时失败的情况,因此心想把这个问题解决掉并做一个记录)
如图所示位置报错【Result of ‘file.delete()’ is ignored】
在这里插入图片描述

此时通过布尔捕获到file.delete() 的值,将不会出现结果被忽略的情况。

在这里插入图片描述
通过此方式代码中getTmpFIle.delete()就没有报错了,调用方法执行后输出结果有如下两种情况:
当输出为true时,则为文件存在删除成功
当输出为false时,则为删除失败,文件存在或被占用
在这里插入图片描述
临时文件代码工具类如下

public static void exportExcelData(HSSFWorkbook hssfWorkbook, String fileName, HttpServletResponse response){
        FileOutputStream fos = null;
        FileInputStream fis = null;
        OutputStream outputStream = null;
        File getTmpFile = null;
        try {
            // 设置日期格式
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            // new Date()为获取当前系统时间
            String newFileName = fileName + "_" + df.format(System.currentTimeMillis());
            // 临时文件,为了减少内存占用
            String fileNamePath = FileCommon.getPath() + "templates/" + newFileName + ".xlsx";

            // 2.设置头信息
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/vnd.ms-excel;charset=utf-8");

            // 3.一定要设置成xlsx格式
            response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(newFileName + ".xlsx", "UTF-8"));

            // 4.创建一个输出流,  使用了BufferedOutputStream,能加快导出速度,不用也可以
            outputStream = new BufferedOutputStream(response.getOutputStream(),6144);

            // 获取excel表格大小(字节长度)
            int length = hssfWorkbook.getBytes().length;
            // 5.写入数据,判定文件大小选择不同方式输出文件,当文件大于500KB时,临时文件的方式,否则直接输出即可
            if( length > (0.5 * 1024 * 1024)){
                // 方案一:先写入excel临时文件中在输出至前端页面,以减少内存占用
                fos = new FileOutputStream(fileNamePath);
                hssfWorkbook.write(fos);
                fos.close();
                hssfWorkbook.close();
                
                getTmpFile=new File(fileNamePath);
                fis = new FileInputStream(getTmpFile);
                IOUtils.copy(fis, outputStream);
                System.out.println("----------------" + length);
            }else{
                // 方案二:直接将文件输出至前端
                hssfWorkbook.write(outputStream);
                System.out.println("===============" + length);
            }

            // 6.关闭流
            outputStream.flush();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fis !=null) {
                    fis.close();
                }
                if(outputStream!=null){
                    outputStream.close();
                }
                if(getTmpFile !=null && getTmpFile.exists() && getTmpFile.isFile()){
                    getTmpFile.delete();
                }
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }

至此问题解决,如果对你有帮助就点个赞吧!
(看见提示就想解决,有木有同款朋友,O(∩_∩)O哈哈~)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 意思是“file.mkdirs()的结果被忽略了”。这句话的意思是,在Java程序中,如果调用了file.mkdirs()方法来创建一个目录,但是没有对该方法的返回值进行处理或者判断,那么这个方法的执行结果就会被忽略掉,可能会导致程序出现错误或者异常。因此,在编写Java程序时,我们应该注意对方法的返回值进行处理和判断,避免出现不必要的错误。 ### 回答2: file.mkdirs()是Java中一种用于创建多级目录的方法,其返回值为布尔型。在程序中如果遇到这样的语句:result = file.mkdirs(),则意味着程序尝试在文件系统中创建一个或多个目录,如果成功则返回true,否则返回false。 然而,在有些情况下,程序员会忽略这个返回值。例如,程序员可能在创建目录时并不关心其执行结果,或者程序员可能仅仅是忘记了检查返回值。造成这种情况的根本原因是程序员对可靠性缺乏充分认识,没有养成良好的软件工程实践习惯。 忽略返回值的结果可能是非常严重的,因为该方法在执行时可能会出现意外错误,例如文件系统权限问题、磁盘满等,而程序员未对这些错误进行处理,从而导致程序崩溃或者在后续程序逻辑中发生错误。因此,在使用此方法时,应该始终检查其返回值,并根据需要执行后续错误处理逻辑,以确保程序的可靠性和健壮性。 总之,忽略file.mkdirs()的执行结果可能会对程序的健壮性和可靠性造成严重影响,开发人员应该养成检查返回值的良好编程习惯。 ### 回答3: file.mkdirs()方法是用来创建文件夹的,它的返回值是boolean类型的,如果文件夹创建成功,返回true,否则返回false。如果忽略了file.mkdirs()的返回值,则无法确定文件夹是否已经被成功创建。 如果我们忽略了file.mkdirs()方法的返回值,那么就无法及时发现文件夹创建失败的情况,而导致后续程序出现异常或运行失败。如果程序中涉及到对文件夹的读写操作,如果文件夹不存在,那么就会出现文件读写异常。 对于这种情况,我们可以在file.mkdirs()方法前加上try-catch语句来捕获创建文件夹的异常并及时处理,以此保证程序的正常运行。另外,还可以在创建文件夹之后,调用file.exists()方法来判断文件夹是否已经被成功创建,确保程序的正常运行。 总之,我们在使用file.mkdirs()方法时,一定要注意返回值,及时处理文件夹创建的异常,以确保程序的顺利运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值