Java获取、删除文件和目录

  1 package javatest;
  2
  3 import java.io.File;
  4 import java.util.ArrayList;
  5 import java.util.regex.Pattern;
  6
  7 class FileUtils
  8 {
  9     public static void main(String[] args)
 10     {
 11         String dir = "C:\\Users\\hp\\Desktop\\test";
 12
 13         System.out.println("递归的获取该目录下的所有文件:");
 14         for (File f : FileUtils.getFilesRecursive(dir))
 15         {
 16             System.out.println(f.getAbsolutePath());
 17         }
 18
 19         System.out.println("递归的获取该目录下的所有子目录:");
 20         for (File f : FileUtils.getDirecotriesRecursive(dir))
 21         {
 22             System.out.println(f.getAbsolutePath());
 23         }
 24
 25         System.out.println("删除该目录下的所有.html文件");
 26         removeFiles(dir,null);
 27         System.out.println("Done.");
 28     }
 29
 30     /*******递归的获取某个目录下的所有文件******/
 31     public static ArrayList<File> getFilesRecursive(String dir)
 32     {
 33         ArrayList<File> files = new ArrayList<File>();
 34
 35         File targetDir = new File(dir);
 36         if (targetDir.exists())
 37         {
 38             for (File file : targetDir.listFiles())
 39             {
 40                 if (file.isFile())
 41                 {
 42                     files.add(file);
 43                 }
 44                 else if (file.isDirectory())
 45                 {
 46                     files.addAll(getFilesRecursive(file.getAbsolutePath()));
 47                 }
 48             }
 49         }
 50
 51         return files;
 52     }
 53
 54     /*******递归的获取某个目录下的所有子目录******/
 55     public static ArrayList<File> getDirecotriesRecursive(String dir)
 56     {
 57         ArrayList<File> dirs = new ArrayList<File>();
 58
 59         File targetDir = new File(dir);
 60         if (targetDir.exists())
 61         {
 62             for (File f : targetDir.listFiles())
 63             {
 64                 if (f.isDirectory())
 65                 {
 66                     dirs.add(f);
 67                     dirs.addAll(getDirecotriesRecursive(f.getAbsolutePath()));
 68                 }
 69             }
 70         }
 71
 72         return dirs;
 73     }
 74
 75     /*******删除某个目录下,文件名符合过滤条件的所有文件,然后删除空的子目录******/
 76     public static void removeFiles(String targetDir, String fileRegex)
 77     {
 78         ArrayList<File> files = getFilesRecursive(targetDir);
 79         //没有过滤条件,则删除该目录下的所有文件和子目录
 80         if (fileRegex == null||fileRegex.equals("") )
 81         {
 82             //先删除所有文件.
 83             for (File file : files)
 84             {
 85                 file.delete();
 86             }
 87             //由内到外删除所有空目录.
 88             ArrayList<File> dirs=getDirecotriesRecursive(targetDir);
 89             for (int i=0;i< dirs.size();++i)
 90             {
 91                 dirs.get(dirs.size()-1-i).delete();
 92             }
 93         }
 94         else
 95         {
 96             //用正则表达式过滤文件名
 97             Pattern pat = Pattern.compile(fileRegex);
 98             for (File file : files)
 99             {
100                 if (pat.matcher(file.getAbsolutePath()).find())
101                     file.delete();
102             }
103         }
104     }
105 }
时间: 2024-10-26 07:52:45

Java获取、删除文件和目录的相关文章

java递归删除文件及目录

package base; import java.io.File; public class delete { public static void main(String[] args) { deleteFileAndFoder("../yang"); } static void deleteFileAndFoder(String path){ File f=new File(path); if(f.isDirectory()){//假设是文件夹.先递归删除 String[] li

Java删除文件或目录及目录下所有文件

一直在做C++相关开发的工作.突然某一天一时兴起,想学习下Java开发.然后再网上找到一本Java简明教程,入门是够用了.看到文件IO这一章,想起之前用C++做的删除文件或目录的练习,于是打算用Java来实现这个功能.本以为很简单的功能,还是遇到一些问题.仔细分析下代码,定位到出问题的地方.在此处记录下,提醒自己不会重蹈覆辙. 1. 第一版的删除函数是这样写的 1 static boolean delFile(String filename) { 2 File file = new File(f

java递归遍历目录获取所有文件及目录方案

本文提供一份递归遍历目录获取所有文件及目录的源代码: import java.io.File; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2019/2/10. */ public class TestWalkDir { static class FileComponent { File curFile; List<FileComponent> fileComponen

递归删除文件及目录

1 //删除文件及目录 2 public static void deleteFolder(File folder) { 3 File[] files = folder.listFiles(); 4 if(files!=null) { 5 for(File f: files) { 6 if(f.isDirectory()) { 7 deleteFolder(f); <-----如果是目录,则继续循环 8 } else { 9 f.delete(); 10 } 11 } 12 } 13 folde

IOS中获取各个文件的目录路径的方法和NSFileManager类

转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有

删除文件或目录

1 package io.FileOp; 2 import java.io.*; 3 /** 4 * 删除文件或者删除目录 5 * @author www.tfgzs.net 6 */ 7 public class Delete { 8 9 public static void main(String[] args) { 10 String pathString="E:/360Downloads/123456.txt"; //文件路径 11 12 if (delete(pathStri

一天一个Linux基础命令删除文件或目录命令rm

rm  删除文件命令 1.命令格式 rm [options]  file... 2.命令功能 rm命令,删除文件命令,是Linux系统下常用命令,该命令的功能为删除一个文件或者整个目录或者目录中的部分文件,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只删除了链接,原有文件保持不变. rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf或 rm -rf /).所以,我们在执行rm之前最好先确认一下在哪个

Java获取.properties文件

@SuppressWarnings("rawtypes") public static void getProperties() { Properties properties = null; InputStream in = null; try { properties = new Properties(); //获取文件 in = Object.class.getResourceAsStream("/config.properties"); properties

【转】VC MFC 如何删除文件,目录,文件夹

原文网址:http://shijuanfeng.blogbus.com/logs/100675115.html 第一种方法:定义一个文件类对象来操作CFile   TempFile;     TempFile.Remove(指定文件名); 第二种方法:  使用系统函数 DeleteFile( LPCSTR filename )删除文件    _rmdir(),删除目录 DeleteDirectory(sTempDir);  删除目录 RemoveDirectory(sTempDir);删除目录e

IOS中获取各种文件的目录路径的方法

iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其它应该定期备份的信息. 2.AppName.app 目录:这是应用程序的程序包目录,