`
张豆包
  • 浏览: 16388 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 文件删除不成功

    博客分类:
  • Java
阅读更多

做开发,永远都避免不了文件的读与写,当然也有删除。而读与写被大家挖掘的太多,对于文件的删除,却少有人注意,因为File类中有delete()方法。

其实仔细看,会发现这个方法并不是void的返回类型,而是boolean的true和false。

那Java为何要把这个方法的返回类型设置为boolean呢?

那不外乎就是告诉我们文件是否有被删除掉。

那我也能这样理解,我要删除的文件,可能不会被删除掉。

当然,这个可能性很小,但对于java来说,哪怕可能性近乎为0,也总是有人品好的能够碰到...

 

在做文件上传,我表单提交的时候,如果文件不符合或文件中的内容不符合,就会出现回滚的情况。

那除了要回滚数据库中已经保存的数据,还要回滚掉已经上传的文件。

 

在我们本地测试的时候,永远只有我们自己在测试,不良好的编程习惯除了浪费掉更多的资源外,也让我们忽略掉会出现的问题,而File.delete()就是很典型的例子。

 

要使用File.delete就可能要设计到这个文件是否被占用,也许我们并没有打开这个文件,但是,在这个文件被上传的时候,总是会有一个流的。这个流就有可能占用这个文件,导致这个文件不会被删掉。

 

那也许会有人疑惑,在上传完毕的时候,这个流我已经close掉了。

但对于java不然,其实,已经有人说过流的close问题了,它同System.gc()一样,只是告诉java要去清理,但什么时候去执行这个动作, 永远要看jvm的心情。

流的close也同样如此,我们永远不能保证这个文件的流已经被jvm给关闭了。(当然,大部分情况都是很及时的关闭的)。

 

那对于这种情况,刚开始的感觉好像就是束手无策了。

我都已经close了,但jvm自己不去关闭,那我也没办法。

其实,这个时候,就要体现system.gc()的用途。

在file.delete()之前,先执行system.gc(),能够很顺利的去删除掉文件,并且不会碰到删不掉的问题,哪怕它是个压缩文件。

 

很奇怪对吧,system.gc()也是延迟执行的,那这个时候它就不是延迟执行了。

这也许就是java的魅力吧....

当然,其实真正原因还是在于个人编码的良好习惯。

如果养成在每个方法结束的时候,把方法体中的对象等参数设置为null,其实就可以避免很多这种隐形的问题,并且还能缓解服务器的压力。

分享到:
评论

相关推荐

    删除svn文件的java代码

    System.out.println("删除文件成功:" + file.getAbsolutePath()); } else { System.out.println("删除文件失败:" + file.getAbsolutePath()); } } } directory.delete(); System.out.println("删除目录...

    使用java实现的linux和ftp服务器文件上传下载工具

    这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...

    删除大量文件工具.rar

    基于java的多线程大量文件工具删除速度rmdir命令的10倍左右,GIS服务器误操作创建了上亿个文件夹,几千亿的地图切片,为删除这些切片编写了此工具,使用了一天的时间成功删除掉。服务器性能不怎么好所以只开了10个...

    基于Java的的文件图片上传-分片上传-断点续传-秒传java源码.zip

    基于Java的的文件图片上传-分片上传-断点续传-秒传java源码.zip 1.主要功能经测试支持IE9以上,Chrome,FireFox;其他浏览器未测试; 2.文件上传部分:主要实现了文件的上传,进度条,多文件一起上传,上传前删除,...

    文件传输系统 java b级测试

    要求: 客户端实现功能:注册、登陆、上传...bug:不能上传名称带有空格的文件,原因(解决办法:在上传文件和下载文件部分,原本是用split(" ")切分,可以换成substring(3).trim(),跳过get或者put,删除多余空格)

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    SwfUpload 多文件超大文件上传 java版DEMO

    SwfUpload 上传文件 java版DEMO SwfUpload 官网提供的demo都没有java版的,自己用的官网的页面写的一个。上传成功回传上传信息到页面。优化了官网的demo,增加删除附件下载附件。兼容ff chrome ie ,下载导入到...

    七牛云存储删除文件和获取token

    一直想通过android客户端删除和上传文件到七牛,但是删除文件android/java版本的一直没有找到,所以只能自己动手写了,本人测试删除成功。

    完整java上传附件案例,SSH2架构,开源

    4. 包含中文名称的文件上传、附件上传成功后,在数据库表中插入一条记录,记录信息包括一个随机字符的字段,在下载时候通过该字段找到相应的附件 5. 上传文件时候, 反映上传进度 界面设计说明 对上传操作的页面显示...

    Java网络编程-Socket-文件传输小案例

    System.out.println("文件创建成功,开始写入数据..."); } else { buf.position(buflen); ///数据指针指向buf的最后位置 } } break; case 0x2: { //文件主体数据(body) if (buflen >= 9) { BlockIndex = ...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    Java开发技术大全(500个源代码).

    HelloNative.java 准备调用C函数的java文件 HelloNative.lib 用VC编译生成的静态库文件 HelloNative.obj 用VB编译生成的目标文件 HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个...

    基于Spring Boot的文件管理系统,支持文件上传,下载,删除

    基于Spring Boot的文件管理系统,支持文件上传,下载,删除等操作,在线浏览文件列表及基本信息等操作。部署简单,Java课程设计必备。 依赖软件: 1、jdk1.8+ 2、maven 开发调试方法: 解压压缩包,导入IDE,...

    JAVA递归删除目录失败

    so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包9

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    JAVA WEB框架,java网站一个模块只用写一个文件

    |___Hyberbin.java 进一步封装了数据库的操作,用户不直接对数据库操作,只要给出实体POJO类,数据可以自动查询、修改、删除、插入 servlet 用户自己的包,完成相应模块的功能。 |___Szdw.java POJO类,对应数据库...

    java开源包101

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

Global site tag (gtag.js) - Google Analytics