`
张豆包
  • 浏览: 16718 次
  • 性别: 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,其实就可以避免很多这种隐形的问题,并且还能缓解服务器的压力。

分享到:
评论

相关推荐

    java删除本地文件.txt

    System.out.println("文件删除成功!"); } else { System.out.println("文件删除失败!"); } ``` ### 三、处理删除过程中的异常情况 #### 1. 文件不存在 如果指定路径的文件不存在,则`delete()`方法会返回`...

    java创建和删除文件夹、文件.doc

    System.out.println("文件删除成功"); } else { System.out.println("文件删除失败"); } } catch (Exception e) { System.out.println("删除文件操作出错"); e.printStackTrace(); } } ``` **注意点:** 1....

    java创建和删除文件夹、文件

    System.out.println("文件删除成功"); } else { System.out.println("文件删除失败"); } } catch (Exception e) { System.out.println("删除文件操作出错"); e.printStackTrace(); } } ``` ### 总结 通过...

    java文件删除操作

    ### Java 文件删除操作详解 在Java编程中,文件与目录的操作是常见的需求之一,尤其是在进行系统维护、数据处理等场景时。本文将详细介绍一个用于Java文件及目录删除操作的实用工具类——`DeleteFileUtil`。 #### ...

    java 删除文件或文件夹

    ### Java删除文件或文件夹知识点解析 在Java中,经常需要对文件系统进行操作,比如创建、删除文件或文件夹等。本篇文章将基于提供的代码示例,详细讲解如何使用Java来动态地删除文件和文件夹。 #### 一、基础知识...

    java 删除文件夹内指定前缀名字的所有文件

    在Java编程语言中,删除文件或文件夹是一项常见的任务,特别是在进行文件系统操作时。这里我们将深入探讨如何在Java中删除文件夹内指定前缀名字的所有文件。首先,我们需要了解`java.io.File`类,它是Java标准库中的...

    java文件操作(增删改查)

    本项目"java文件操作(增删改查)"是基于控制台实现的一个无界面程序,利用Eclipse集成开发环境编写,实现了基本的文件管理功能。下面我们将深入探讨这些知识点。 首先,我们要了解Java中的`java.io`包,它是处理输入...

    文件删除Java源码

    `delete()`方法返回一个布尔值,如果文件删除成功,返回`true`,否则返回`false`。在实际应用中,通常需要对返回值进行检查,以处理可能出现的错误。 3. **可视化操作**:描述中提到的“可视化操作”可能是指使用...

    Java中删除文件、删除目录及目录下所有文件

    在Java编程语言中,删除文件或目录是一项常见的操作,这对于清理资源、释放磁盘空间或者在应用程序中执行清理任务是必不可少的。以下将详细介绍如何在Java中实现这一功能。 首先,我们来了解一下Java中用于文件操作...

    基于JAVA的常用文件操作方法

    System.out.println("文件已成功删除."); } else { System.out.println("无法删除文件."); } ``` 5. **处理目录**: `File`类也提供了创建、删除目录的方法。`mkdir()`用于创建单级目录,`mkdirs()`用于创建...

    java springboot 七牛云文件上传,下载,删除

    至此,你已经成功地在Spring Boot项目中集成了七牛云的文件上传、下载和删除功能。用户可以通过API接口进行文件操作。需要注意的是,实际项目中还需要考虑错误处理、权限验证等额外细节,以确保服务的稳定性和安全性...

    文件删除java代码

    在Java编程语言中,删除文件是一项常见的操作,特别是在文件管理和系统清理的过程中。下面将详细讲解如何使用Java代码来实现文件的删除,以及涉及到的相关知识点。 首先,Java中的`java.io`包提供了处理文件操作的...

    java程序实现文件夹删除

    在Java编程语言中,删除文件或文件夹是一个常见的任务,特别是在处理文件系统操作时。本文将深入探讨如何使用Java API来实现文件夹及其内容的删除功能。首先,我们需要理解Java中处理文件操作的核心类`java.io.File`...

    JAVA调用OS命令删除文件

    System.out.println("文件删除成功"); } else { System.out.println("文件删除失败"); } } catch (Exception e) { e.printStackTrace(); } } } ``` 这段代码中,`exec()`方法用于执行命令,`waitFor()`方法...

    Java 文件移动代码

    以下是一个简单的Java文件移动代码示例: ```java import java.io.File; import java.io.IOException; public class FileMoveExample { public static void main(String[] args) { String sourceFilePath = ...

    Java I/O文件读写/删除/复制等

    Java I/O 文件操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,涉及文件的创建、读取、写入、删除以及复制等任务。在Java中,这些操作主要是通过java.io包提供的类来实现的。下面将详细介绍这些知识点...

    JAVA获取FTP文件列表

    本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`,该类提供了一系列功能来与FTP服务器交互,包括连接到服务器、上传文件、下载文件、获取文件列表、删除文件和目录以及关闭连接等操作。 #### 二、`...

    java文件生成

    这个场景中提到的"java文件生成"指的是创建一个包含指定内容的.java源代码文件。让我们深入了解一下如何在Java中实现这一功能,并探讨相关的核心知识点。 首先,我们需要了解Java I/O流(Input/Output Stream)的...

    java文件上传下载jar包

    这里提到的"java文件上传下载jar包"指的是Java中用于处理文件上传和下载操作的库的jar文件。下面将详细介绍这个主题中的相关知识点。 1. **Servlet API**:Java Servlet API是Java Web开发的基础,它提供了处理HTTP...

Global site tag (gtag.js) - Google Analytics