精华内容
下载资源
问答
  • java File删除文件夹完整版

    千次阅读 2015-10-14 09:07:28
    如果文件夹下面有子文件夹或文件,可能子文件夹下面还有文件或者文件夹的话,这样直接是删不掉的,什么意思呢,我查遍java file的api,当文件夹下面还存在文件时,并没有直接提供方法删除。为了省事,刚才随便百度了...

           经常写代码,应该能遇到这样一个问题,需要用java删除某个文件夹,如果文件夹下面有子文件夹或文件,可能子文件夹下面还有文件或者文件夹的话,这样直接是删不掉的,什么意思呢,我查遍java file的api,当文件夹下面还存在文件时,并没有直接提供方法删除。为了省事,刚才随便百度了一个,代码比较长,由于我需要删除的子文件夹中存在以“.”开头的文件,于是并不能删除。最后静下来自己写了一个,总共代码就十行左右,但是和一般人的思路都不太一样。

    private void deleteFile(String fileName){     
            File file = new File(fileName);  
            if(file.exists()){  
                file.delete();  
            }  
            if(file.exists()){  
                 String[] paths = file.list();  
                 for(String str:paths){  
                     deleteFile(fileName+"\\"+str);  
                 }  
                 file.delete();  
            }  
        }  

           这样确实解决了问题,但是细想下,里面还是有些问题的,java不让删除有子文件的文件夹,估计也是为了安全考虑,没有任何提示,一旦删除,那就真没了。那我们来稍微修改下代码:

    private void deleteFile(String fileName,boolean isForceDelete){		
    		File file = new File(fileName);
    		if(file.exists()){
    			file.delete();
    		}
    		if(file.exists()){
    			if(!isForceDelete){
    				return;
    			}
    			 String[] paths = file.list();
    			 for(String str:paths){
    				 deleteFile(fileName+"\\"+str,isForceDelete);
    			 }
    			 file.delete();
    		}
    	}

           传这样一个参数,是否强制删除,如果文件夹下面还是文件夹,那就不删除,只要传一个boolean型的参数false就解决了问题。

           看到这,本以为解决了问题,其实还没有,你知道递归的执行效率很低,并且对资源的占用情况随着任务规模的扩大,对资源的占用将呈几何式增长么,你想一下,如果目标文件夹下面存在大量的层级比较深的文件和文件夹时,这时候的执行效率是比较低的,而且很占资源。一旦你选择了递归算法,我觉得执行效率没啥改变了,但是资源占用方面可以有所改变,因此可以从这方面考虑下。这时候不用疑惑,java的GC线程虽然是实时的在检测着,但是一旦系统规模大了,难免有些照应不过了,因此有些垃圾对象可能会删除的有点迟,这里可以查一下,gc回收垃圾的机制有一种是查询对象是否还有被引用,一旦没有被引用,则立即启用回收,准备回收,于是我们可以稍微再改下代码:

    private void deleteFile(String fileName,boolean isForceDelete){		
    		File file = new File(fileName);
    		if(file.exists()){
    			file.delete();
    		}
    		if(file.exists()){
    			if(!isForceDelete){
    				return;
    			}
    			 String[] paths = file.list();
    			 for(String str:paths){
    				 deleteFile(fileName+"\\"+str,isForceDelete);
    			 }
    			 file.delete();
    			 paths = null;	// lets gc do its works
    		}
    		file = null;	// lets gc do its works
    	}

           这样问题应该彻底解决了,虽然我也只是一名菜鸟,但是平时就应该用这样的标准要求自己,平时多研究下,随着经验的积累,总一天别人也会叫你"大牛"、"*哥",至于lets gc do its works 这样的注释写法源于java 源码,java源码都是开放的,建议大家没事多研究下java源码,里面有很多经典的代码。

     

     

     

    展开全文
  • 以下我写了一个较为简单的javaFile删除磁盘上的文件及其文件夹的例子,希望对初学者有用!public class test { public void delete(String path) { File file = new File(path); String[] FList = file.list(); ...

    以下我写了一个较为简单的javaFile删除磁盘上的文件及其文件夹的例子,希望对初学者有用!

    public class test {
    
        public void delete(String path) {
            File file = new File(path);
            String[] FList = file.list();
                if(FList != null && FList.length > 0) {
                    for (int i = 0; i < FList.length; i++) {
                        file = new File(path +"/"+ FList[i]);
                        file.delete();  //删除子文件
                    }
                    delete(path);
                } else 
                    file.delete();
        }
    
        public static void main(String[] args) {
            test t = new test();
            t.delete("D:/software/apache-tomcat-7.0.26/webapps/pro/upload/bm/e73db583d8df4bf38b95ac75f745a0da");
        }
    }
    展开全文
  • Java file对象 删除目录

    2017-10-15 15:18:05
    import java.io.File; import java.nio.file.Files; import javax.naming.directory.DirContext; /* * 删除一个带内容的目录 * * 原理:必须要从最里面往外删 * 需要深度遍历 */ public class RemoveDirTest...
    package p.file.test;
    
    import java.io.File;
    import java.nio.file.Files;
    
    import javax.naming.directory.DirContext;
    
    /*
     * 删除一个带内容的目录
     * 
     * 原理:必须要从最里面往外删
     * 需要深度遍历
     */
    public class RemoveDirTest {
    
    	public static void main(String[] args) {
    		File dir=new File("d:\\demodir");
    		removeDir(dir);
    		
    	}
    
    	private static void removeDir(File dir) {
    		File[] files=dir.listFiles();
    		
    		for(File file:files) {
    			if(file.isDirectory()) {
    				removeDir(file);
    			}
    			else {
    				System.out.println(file+":"+file.delete());
    			}
    			
    		}
    		System.out.println(dir+":"+dir.delete());
    	}
    
    }
    

    展开全文
  • Java File文件操作

    万次阅读 多人点赞 2016-05-21 20:35:57
    Java提供File类,让我们对文件进行操作,简单整理了一下File类的用法。 1.基本概念File:文件和目录路径名的抽象表示形式,代表文件或者文件夹。 2.构造方法 // 根据parent抽象路径名和child路径名字符串创建一个新...

    Java提供File类,让我们对文件进行操作,简单整理了一下File类的用法。

    这里写图片描述

    1.基本概念

    File:文件和目录路径名的抽象表示形式,代表文件或者文件夹。

    2.构造方法

    	    // 根据parent抽象路径名和child路径名字符串创建一个新File实例
    		File(File parent, String child)
    		// 通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
    		File(String pathname)
    		// 根据parent路径名字符串和child路径名字符串创建一个新File实例
    		File(String parent, String child)
    		// 通过将给定的file:URI转换为一个抽象路径名来创建一个新的File实例
    		File(URI uri)
    

    3.常用方法

    (1).创建功能

    // 创建此抽象路径名指定的目录
    boolean mkdir()
    // 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
    boolean mkdirs()
    // 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
    boolean createNewFile()
    // 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称
    static File createTempFile(String prefix, String suffix)
    // 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称
    static File createTempFile(String prefix, String suffix, File directory)

            // 构造方法一
    		File file1 = new File("f://file1");
    		// 构造方法二
    		File file2 = new File("f://file1", "file2");
    		// 构造方法三
    		File file3 = new File(file2, "file3.txt");
    
    		// 创建目录并返回是否创建成功,如果目录存在则返回false
    		boolean b1 = file1.mkdir();
    		System.out.println(b1);// true
    		// 创建目录
    		boolean b2 = file2.mkdir();
    		System.out.println(b2);// true
    		// 创建文件
    		// 在F盘下创建/file1/file2/file3.txt文件
    		boolean b3 = file3.createNewFile();
    		System.out.println(b3);// true
    
    		// 创建空文件并指定前缀和后缀
    		// 在F盘下创建/file1/file2/file4.....exe文件
    		File.createTempFile("file4", ".exe", file2);
    

    这里写图片描述

    注:三种构造方法效果是等同的,没有本质区别;创建目录mkdir()、mkdirs()方法,mkdirs()方法创建目录时,如果待创建目录的上几级目录不存在则一并创建,mkdir()则只能创建单级目录。

    (2).删除功能

    // 删除此抽象路径名表示的文件或目录
    boolean delete()

           //删除目录
    	   System.out.println(file1.delete()); // false
    	   //删除文件
    	   System.out.println(file3.delete());// true
    

    注:删除操作时,删除的是目录,则必须保证是空目录。

    (3).判断功能

    // 测试此抽象路径名表示的文件或目录是否存在
    boolean exists()
    // 测试此抽象路径名表示的文件是否是一个目录
    boolean isDirectory()
    // 测试此抽象路径名表示的文件是否是一个标准文件
    boolean isFile()
    // 测试此抽象路径名指定的文件是否是一个隐藏文件
    boolean isHidden()
    // 测试应用程序是否可以读取此抽象路径名表示的文件
    boolean canRead()
    // 测试应用程序是否可以修改此抽象路径名表示的文件
    boolean canWrite()

    	    File file = new File("F://hello");
    		File file2 = new File(file, "blog.txt");
    		// 判断是否存在
    		if (!file.exists()) {
    			// 创建目录
    			file.mkdir();
    		}
    		if (file2.exists()) {
    			// 创建文件
    			file2.createNewFile();
    		}
    
    		// 判断是否是目录
    		System.out.println(file.isDirectory());// true
    		// 判断是否是文件
    		System.out.println(file.isFile());// false
    
    		System.out.println(file2.isDirectory());// false
    		System.out.println(file2.isFile());// true
    		System.out.println(file2.isHidden());// false
    		// 判断是否是隐藏的
    		System.out.println(file2.isHidden());// false
    		// 判断是否可读
    		System.out.println(file2.canRead());// true
    		// 判断是否可写
    		System.out.println(file2.canWrite());// true
    

    注:可以自主修改文件可读性,查看不同输出。

    (4).获取功能

    (1).基本获取功能

    // 返回由此抽象路径名表示的文件或目录的名称
    String getName()
    // 返回此抽象路径名的绝对路径名形式
    File getAbsoluteFile()
    // 返回此抽象路径名的绝对路径名字符串
    String getAbsolutePath()
    // 将此抽象路径名转换为一个路径名字符串
    String getPath()
    // 返回此抽象路径名表示的文件最后一次被修改的时间
    long lastModified()

    	  	File file = new File("F://hello");
    		File file2 = new File(file, "blog.txt");
    		// 判断文件或目录是否存在
    		if (!file.exists()) {
    			// 不存在则创建
    			file.mkdir();
    		}
    		if (file2.exists()) {
    			// 创建文件
    			file2.createNewFile();
    		}
    		//获取文件名或者目录名
    		System.out.println(file2.getName());// blog.txt
    		//获取文件或目录的绝对路径
    		System.out.println(file2.getAbsolutePath());// F:\hello\blog.txt
    		//获取文件或目录的路径名(绝对路径或者相对路径)
    		System.out.println(file2.getPath());// F:\hello\blog.txt
    	    //获取文件或目录修改的最后时间返回毫秒值
    		System.out.println(file2.lastModified());// 1463734158963
    
    (2).迭代获取功能,过滤器功能

    // 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
    String[] list()
    // 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录
    String[] list(FilenameFilter filter)
    // 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
    File[] listFiles()
    // 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
    File[] listFiles(FileFilter filter)
    // 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
    File[] listFiles(FilenameFilter filter)

    图示:先看下F盘里面的东东
    这里写图片描述

    	    File file = new File("F://");
    
    		// 获取抽象路径名下的文件和目录
    		String[] s = file.list();
    		// 过滤文件或者目录名
    		String[] ss = file.list(new FilenameFilter() {
    
    			public boolean accept(File dir, String name) {
    				// 返回以.png结尾的文件或者目录名
    				// 控制返回值判断是否添加到数组中
    				return name.endsWith(".png");
    			}
    		});
    
    		// 增强for输出
    		for (String string : s) {
    			System.out.print(string + " ");// $RECYCLE.BIN android4.0黑马  android视频......等等
    		}
    
    		// 增强for
    		for (String string : ss) {
    			System.out.print(string + " ");// ic_ptr_loading.png ic_ptr_pull.png ic_ptr_release.png
    		}
    
    		// 获取抽象路径名下的文件和目录对象
    		File[] files = file.listFiles();
    		// 获取抽象路径名下的文件和目录对象,添加文件过滤
    		File[] files2 = file.listFiles(new FileFilter() {
    
    			public boolean accept(File pathname) {
    				// 判断是否是隐藏目录
    				return (pathname.isDirectory()&&pathname.isHidden());
    			}
    		});
    
    		// 获取抽象路径名下的文件和目录对象,添加文件名过滤
    		File[] files3 = file.listFiles(new FilenameFilter() {
    
    			public boolean accept(File dir, String name) {
    				// 判断是否是以png结尾的文件
    				return (new File(dir, name).isFile())&&name.endsWith(".png");
    			}
    		});
    
    		for (File f : files) {
    			System.out.print(f.getName()+" ");//$RECYCLE.BIN android4.0黑马 android视频......等等
    	    System.out.println();
    		for (File f : files2) {
    			System.out.print(f.getName()+" ");//$RECYCLE.BIN ghos 
    		}
    		 System.out.println();
    		for (File f : files3) {
    			System.out.print(f.getName());//ic_ptr_loading.pngic_ptr_pull.pngic_ptr_release.png
    		}
    

    (5).重命名功能

    // 重新命名此抽象路径名表示的文件
    boolean renameTo(File dest)

            // 重新命名此抽象路径名表示的文件
    		// boolean renameTo(File dest)
    
    		File file = new File("f://");
    		File[] files = file.listFiles();
    
    		for (int i = 0; i < files.length; i++) {
    			File f = files[i];
    			//判断是否是以.png结尾的文件
    			if (f.isFile() && f.getName().endsWith(".png")) {
    				// 更改文件名,renameTo()接收File对象 ,这里该对象并未指定盘符
    				boolean b = f.renameTo(new File("pic" + i + ".png"));
    				System.out.println(b);
    				// true
    				// true
    				// true
    			}
    		}
    

    图示:
    这里写图片描述
    这里写图片描述

    注:更改文件或目录名时,renameTo()方法参数对象如果不指定盘的话,默认会将文件剪切到项目目录下(由上面截图可以看到);指定盘符的话会根据指定位置剪切到该位置。renameTo()方法相当于剪切加重命名。

    注:更多方法查看API

    展开全文
  • 注意:java中的file对象不能 直接删除有内容的文件夹 ,比如,该文件夹中有东西,调用java直接删除就会报错。 package Dome; import java.io.File; public class Delete { public static void main(String[] ...
  • Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。 有以下四种方法构建一个File对象: File(File parent,String child):以父抽象路径名和子路径名字符串...
  • 【声明】本文参考自极客学院视频 ...import java.io.File; import java.io.IOException; public class test1{ public static void main(String[] args) { File file=new File("./bin/hello.txt"); //是...
  • Java File操作汇总

    千次阅读 2014-11-21 21:11:48
    本文通过大量的示例,介绍和讲解了Java File操作。 1)创建文件 2)删除文件 3)判断文件是否存在 4)创建文件夹 5)文件类型判断 6)获取文件信息 7)获取目录下文件名 8)递归打印所有文件名 9)递归删除整个...
  • Java删除文件(delete file in java)

    万次阅读 2017-09-23 11:01:26
    Java中,可用File.delete()删除一个文件,调用该方法后将返回一个布尔类型的值,true表示删除成功,false则表示删除失败。
  • Java File库createNewFile用法

    万次阅读 2018-01-12 16:58:31
    本篇博客详解Java.io.File类库中的createNewFile()方法 public class CreateNewFileTest { public staticvoid main(String[] args) { File f = null; boolean bool = false; try { f =new File("study....
  • JAVA强制删除文件file

    千次阅读 2019-01-15 10:31:03
    file.delete()的删除不了,因为显示的该文件还被JAVA进程占用。 /** * 删除单个文件 * * @param fileName * 要删除的文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ public static ...
  • java File操作实例

    万次阅读 2007-03-24 13:51:00
    File类一个File类的对象,表示了磁盘上的文件或目录。...------------Java API:------------ java.io 类 Filejava.lang.Object java.io.File所有已实现的接口: Serializable, Comparablepublic class Fileextends Ob
  • 从输入流中读取string,新建一个文件并写入内容,复制一个目录及其子目录、文件到另外一个目录 ,递归删除目录下的所有文件及子目录下所有文件,读取文本文件内容,以行的形式读取....
  • Test File递归删除.java

    2019-10-14 19:15:50
    File类操作递归删除 大型文件秒删 无法找回 千万不要删系统盘
  • Java File类的详解

    千次阅读 2016-07-30 20:00:26
    File类说明 ...由于数据存储在文件中,所以我们需要学习一个和文件有密切关系的类,叫做File类,将要掌握获取文件的属性以及删除和重命名文件.最终如何向文件中写入数据和从文件中读取数据. 那么File类关心的是
  • 今天在修订文件部署的bug的时候,应用的临时文件调用 File的delete方法总会删除失败。 后来网上查了下说是有些流在使用,导到删除失败,于是把自己的InputStream关闭。删除,又失败了,向上看,原来还有一个地方...
  • java File类 简单用法举例

    万次阅读 多人点赞 2011-07-20 19:37:08
    File类简单用法! import java.io.File; import java.io.IOException; public class TestFile { public void createFile(String path){ File fi
  • package com.wyebd.gis; import java.io.File; /** * @Title: DelFiles.java * @Package com.wyebd.gis * @Description: * @author lisr * @date Mar 7, 2012 5:36:03 PM * @version V1.0 */ pu
  • Java File 类 rename方法

    2016-06-02 08:45:17
    Java File 的 rename方法,为什么执行效率那么低。我使用rename方法移动图片,移动一张图片是七八秒时间,测试的都要杀了我了啊。之后改成,使用io流读取文件,然后复制文件,删除。花费时间很低很低。图片只有200多...
  • java File类字节流(复制、删除、剪切,下载)操作,多线程(用对象实现生产者消费者的例子)
  • JAVA 删除File文件中的内容。

    万次阅读 2012-01-11 12:24:31
    写android应用的时候需要删除文件中...没java基础会让你很蛋疼的。。 public boolean delFile(String strPath) { boolean filebool = false; File file = new File(strPath); if (file.exists() && file.is
  • Java File类 常用方法

    千次阅读 2018-01-03 13:28:45
    1)String getName() 返回File对象所表示的文件名或文件路 2)String getPath() 返回File对象所对应的路径名。 3)File getAbsoluteFile() 返回File对象的绝对路径文件 4)String getAbsolutePath() 返回File对象所...
  • Java:简述Java.io.File中的文件删除方法 JavaJava.io.File类中提供如下两种删除文件的方式: 1.delete()方法: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当调用...
  • import java.io.File; import java.io.... * File类定义,文件的创建与删除,文件目录的创建 */ public class MyFile { public static void main(String args[]){ //File类的定义方法 File file0 = new F...
  • javaFile

    千次阅读 2011-03-15 16:29:00
    javaFile
  • 要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件注意:以下递归删除文件的方法,只能删除
  • java file deleteOnExit()方法踩坑记

    千次阅读 2017-10-13 13:04:50
    背景   从视频存储中心下载视频保存到本地。发现执行过程确实能看到本地视频的产生,一旦程序执行完,该视频又被删除了。code 如下 : @Test public void testDownloadVideo() throws ... File file = new Fi
  • NULL 博文链接:https://rich8w.iteye.com/blog/565543
  • 1 如果删除文件失败,则说明文件被其他进程线程占用导致无法删除 2 如果删除的是一个文件夹,则必须先删除文件夹下的文件,然后再删除文件夹。 由于文件夹存在嵌套的情况,则需要逐级删除,现提供方法如下: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 395,948
精华内容 158,379
关键字:

java的file删除

java 订阅