JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件
JAVA遍历文件夹下的所有文件

JAVA遍历⽂件夹下的所有⽂件JAVA遍历⽂件下的所有⽂件和⽂件夹@Testpublic void traverseFolder1( ) {String path = "D:\\TEST";int fileNum = 0;int folderNum = 0;int foldeNum = 0;File file = new File(path);if (file.exists()) {LinkedList<File> list = new LinkedList<File>();//list()⽅法是返回某个⽬录下的所有⽂件和⽬录的⽂件名,返回的是String数组//listFiles()⽅法是返回某个⽬录下所有⽂件和⽬录的绝对路径,返回的是File数组File[] files = file.listFiles();for (File file2 : files) {if (file2.isDirectory()) {System.out.println("⽂件夹:" + file2.getAbsolutePath());list.add(file2);foldeNum++;} else {System.out.println("⽂件:" + file2.getAbsolutePath());fileNum++;}}File temp_file;while (!list.isEmpty()) {temp_file = list.removeFirst();//删除第⼀个元素,也就是找到数组中的第⼀个元素返回⼀个File去判断,说⽩了就是循环分别找到每个⽂件下⾯对应的是⽂件还是⽂件夹,如果循环下⼀级还是⽂件夹则继续循环直到结束(思想就是⼀层⼀层去判断查找知道找到所有的⽂件和⽂件夹,不明⽩看下⾯的例⼦。
)files = temp_file.listFiles();for (File file2 : files) {if (file2.isDirectory()) {//如果是个⽬录(⽂件夹)则返回trueSystem.err.println("⽂件夹:" + file2.getAbsolutePath());list.add(file2);folderNum++;} else {//输出⽂件System.out.println("⽂件:" + file2.getAbsolutePath());//返回⽂件的完整路径。
directory类的方法

directory类的方法Directory类的介绍在Java中,Directory类是一个很常见的类,它用于操作目录或文件夹,可以创建、删除、修改目录以及获取目录的名称、路径等信息。
Directory类是一种非常方便和常用的工具类,可以让我们更加高效地处理目录以及文件夹的相关操作。
Directory类的基本方法1. 创建目录在Java中,我们可以使用mkdir()方法创建一个新的目录,例如:```File file = new File("C:\\test");if (!file.exists()) {file.mkdir();}```上面的代码意思是如果C盘下没有一个test目录,就创建一个名为test的目录。
还可以使用mkdirs()方法创建多级目录:```File file = new File("C:\\test\\demo\\temp");if (!file.exists()) {file.mkdirs();}```上面的代码意思是如果C盘下没有test目录,则先创建test目录,然后在其中创建demo目录和temp目录。
2. 删除目录在Java中,我们可以使用delete()方法删除目录,例如:```File file = new File("C:\\test");if (file.exists()) {file.delete();}```上面的代码意思是如果C盘下有一个名为test的目录,就删除这个目录。
需要注意的是,删除目录时,必须保证该目录为空,否则会抛出异常。
可以使用deleteOnExit()方法在程序退出时删除目录。
3. 修改目录在Java中,我们可以使用renameTo()方法修改目录的名称,例如:```File oldFile = new File("C:\\test\\origin");File newFile = new File("C:\\test\\new");if (oldFile.exists() && !newFile.exists()) {oldFile.renameTo(newFile);}```上面的代码将test目录下的origin目录名称修改为new。
Java移动文件夹及其所有子文件与子文件夹

Java移动⽂件夹及其所有⼦⽂件与⼦⽂件夹在Java移动⽂件夹及其所有⼦⽂件与⼦⽂件夹可以有如下的⼀段简单的⽅法来说明:public static void moveFolder(String oldPath, String newPath) {//先复制⽂件copyFolder(oldPath, newPath);//则删除源⽂件,以免复制的时候错乱deleteDir(new File(oldPath));}不应该直接剪切⽂件,防⽌在剪切的时候出错,导致这样那样的问题。
在Java复制⽂件夹及其所有⼦⽂件与⼦⽂件夹,在()⼀⽂中已经详细说过了。
关键是删除⽂件夹及其⼦⽂件与⼦⽂件夹。
在Java中,File类的delete()⽅法只能删除为空的⽂件夹或者单个⽂件,因此必须遍历整个⽂件夹,先从最内层的⽂件夹中的⽂件开始,进⾏递归删除,具体⽅法如下:// 删除某个⽬录及⽬录下的所有⼦⽬录和⽂件public static boolean deleteDir(File dir) {// 如果是⽂件夹if (dir.isDirectory()) {// 则读出该⽂件夹下的的所有⽂件String[] children = dir.list();// 递归删除⽬录中的⼦⽬录下for (int i = 0; i < children.length; i++) {// File f=new File(String parent ,String child)// parent抽象路径名⽤于表⽰⽬录,child 路径名字符串⽤于表⽰⽬录或⽂件。
// 连起来刚好是⽂件路径boolean isDelete = deleteDir(new File(dir, children[i]));// 如果删完了,没东西删,isDelete==false的时候,则跳出此时递归if (!isDelete) {return false;}}}// 读到的是⼀个⽂件或者是⼀个空⽬录,则可以直接删除return dir.delete();}因此,整个⽅法连起来就是这个样⼦,把C盘下的A⽂件夹及其所有⼦⽂件与⼦⽂件夹,移动到F盘,并且重新命名:import java.io.*;public class CutTest {// 删除某个⽬录及⽬录下的所有⼦⽬录和⽂件public static boolean deleteDir(File dir) {// 如果是⽂件夹if (dir.isDirectory()) {// 则读出该⽂件夹下的的所有⽂件String[] children = dir.list();// 递归删除⽬录中的⼦⽬录下for (int i = 0; i < children.length; i++) {// File f=new File(String parent ,String child)// parent抽象路径名⽤于表⽰⽬录,child 路径名字符串⽤于表⽰⽬录或⽂件。
java 树形结构递归过滤

java 树形结构递归过滤Java树形结构递归过滤在Java编程中,树形结构是一种非常常见的数据结构。
它由一系列的节点构成,这些节点按照一定的层次关系连接起来。
树形结构可以用于模拟现实中的各种场景,比如文件系统、组织结构等。
然而,在实际应用中,我们经常需要对树形结构进行一些操作,如搜索、过滤等。
本文将重点讨论如何使用递归来对树形结构进行过滤操作。
第一步:了解树形结构在开始之前,首先要了解树形结构的基本概念。
树形结构由一个根节点和若干个子节点组成,每个节点包含数据以及连接到下一层节点的指针。
节点之间的连接关系遵循一定的层次关系,即每个节点最多有一个父节点和多个子节点。
# 示例:文件系统我们以文件系统为例来说明树形结构的概念。
在文件系统中,根节点表示整个文件系统,它的子节点表示根目录下的所有文件和文件夹。
每个子节点又可以有自己的子节点,构成了一个递归的树形结构。
例如,我们可以构建如下的文件系统树形结构:C:\Program FilesJavajdkbinlibApacheTomcatconflibUsersAliceBob在这个示例中,根节点表示C盘,它有两个子节点Program Files和Users。
以此类推,我们可以进一步展开每个子节点,直到最底层的叶子节点。
第二步:树形结构的递归过滤接下来,我们将树形结构的递归过滤问题进行具体讨论。
假设我们有一个文件系统树形结构,我们想要找出其中所有包含某个关键词的文件或文件夹。
这时,递归过滤就能帮助我们实现这个目标。
# 实现思路首先,我们需要定义一个递归函数来实现树形结构的遍历和过滤操作。
这个函数的输入参数包括当前节点、过滤关键词以及存储结果的数据结构。
函数的主要逻辑如下:1. 判断当前节点是否符合过滤条件,如果是,则将该节点添加到结果中。
2. 判断当前节点是否有子节点,如果有,则递归调用本函数继续遍历子节点。
3. 返回结果。
# 递归函数代码下面是一个简单的递归过滤函数的实现:javapublic void recursiveFilter(Node node, String keyword, List<Node>result) {if (node.getName().contains(keyword)) {result.add(node);}if (node.hasChildren()) {for (Node child : node.getChildren()) {recursiveFilter(child, keyword, result);}}}在这个代码中,我们通过判断节点的名称是否包含给定的关键词来决定是否将该节点添加到结果中。
java中File类应用遍历文件夹下所有文件

java中File类应⽤遍历⽂件夹下所有⽂件本⽂要求遍历指定⽂件夹下的所有⽂件,包括⼦⽂件夹下的⽂件,供⼤家参考,具体内容如下代码:package 遍历⽂件夹所有⽂件;import java.io.File;public class Test {public static void main(String[] args){File file=new File("D:\\tcb\\周总结");filesDirs(file);}//使⽤递归遍历⽂件夹及⼦⽂件夹中⽂件public static void filesDirs(File file){//File对象是⽂件或⽂件夹的路径,第⼀层判断路径是否为空if(file!=null){//第⼆层路径不为空,判断是⽂件夹还是⽂件if(file.isDirectory()){//进⼊这⾥说明为⽂件夹,此时需要获得当前⽂件夹下所有⽂件,包括⽬录File[] files=file.listFiles();//注意:这⾥只能⽤listFiles(),不能使⽤list()//files下的所有内容,可能是⽂件夹,也可能是⽂件,那么需要⼀个个去判断是⽂件还是⽂件夹,这个判断过程就是这⾥封装的⽅法 //因此可以调⽤⾃⼰来判断,实现递归for (File flies2:files) {filesDirs(flies2);}}else{System.out.println("⽂件名字"+file);}}else{System.out.println("⽂件不存在");}}}结果:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
递归删除文件和文件夹(bat)

样例中递归删除qt工程的临时用户配置文件以及编译生成的以build-开头的文件。 如果支持多种类型,请使用英文逗号分隔开来书写,如.\build*,.\debug*,.\release* 不区分大小写
ቤተ መጻሕፍቲ ባይዱ
希望大家能把自己的所学和他人一起分享不要去鄙视别人索取时的贪婪因为最应该被鄙视的是不肯分享时的吝啬
递归删除文件和文件夹( bat)
递归删除当前目录下指定的文件和文件夹,使用了通配符,Win10下亲测有效,仅供参考!
Batch Code 1 @echo off 2 echo del file... 3 for /r %%i in (*.user*) do del /s /f /q "%%i" 4 echo rm dir... 5 for /f "delims=" %%a in ('dir /b/s/ad .\build*')do rd /s /q "%%a" 6 pause
JAVA使用线程池递归压缩文件夹下面的所有子文件

Java使用线程池递归压缩文件夹下面的所有子文件本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下:Gzip单个文件压缩对于单个文件使用GZip压缩。
1.package date0805.demo1;2.3.import java.io.BufferedInputStream;4.import java.io.BufferedOutputStream;5.import java.io.File;6.import java.io.FileInputStream;7.import java.io.FileOutputStream;8.import java.io.InputStream;9.import java.io.OutputStream;10.import java.util.zip.GZIPOutputStream;11.12.public class GZipRunnable implements Runnable{13.14.private final File file;15.16.public GZipRunnable(File file){17.this.file=file;18.}19.20.@Override21.public void run(){22.if(!file.getName().endsWith(".gz")){23.File outputFile=new File(file.getParent(),file.getName()+".gz");24.if(!outputFile.exists()){25.CountTime countTime=new CountTime(file);26.Thread t=new Thread(countTime);27.t.start();28.try(29.InputStream in=new BufferedInputStream(new FileInputStream(file));30.OutputStream out=new BufferedOutputStream(newGZIPOutputStream(new FileOutputStream(outputFile)));31.){32.int b;33.while((b=in.read())!=-1)34.out.write(b);35.out.flush();36.}catch(Exception ex){37.ex.printStackTrace();38.}39.t.interrupt();40.}else{41.System.out.println(outputFile+"文件已经存在,无法压缩!");42.}43.}44.}45.}创建线程池进行递归压缩要实现对一个文件夹下面的所有的子文件进行压缩,首先递归找出所有子文件,然后调用压缩线程进行压缩。
JAVA遍历文件夹下的所有文件

JAVA遍历⽂件夹下的所有⽂件JAVA 遍历⽂件夹下的所有⽂件(递归调⽤和⾮递归调⽤)1.不使⽤递归的⽅法调⽤.public void traverseFolder1(String path) {int fileNum = 0, folderNum = 0;File file = new File(path);if (file.exists()) {LinkedList<File> list = new LinkedList<File>();File[] files = file.listFiles();for (File file2 : files) {if (file2.isDirectory()) {System.out.println("⽂件夹:" + file2.getAbsolutePath());list.add(file2);foldeNum++;} else {System.out.println("⽂件:" + file2.getAbsolutePath());fileNum++;}}File temp_file;while (!list.isEmpty()) {temp_file = list.removeFirst();files = temp_file.listFiles();for (File file2 : files) {if (file2.isDirectory()) {System.out.println("⽂件夹:" + file2.getAbsolutePath());list.add(file2);folderNum++;} else {System.out.println("⽂件:" + file2.getAbsolutePath());fileNum++;}}}} else {System.out.println("⽂件不存在!");}System.out.println("⽂件夹共有:" + folderNum + ",⽂件共有:" + fileNum);}2.使⽤递归的⽅法调⽤.public void traverseFolder2(String path) {File file = new File(path);if (file.exists()) {File[] files = file.listFiles();if (files.length == 0) {System.out.println("⽂件夹是空的!");return;} else {for (File file2 : files) {if (file2.isDirectory()) {System.out.println("⽂件夹:" + file2.getAbsolutePath());traverseFolder2(file2.getAbsolutePath());} else {System.out.println("⽂件:" + file2.getAbsolutePath());}}}} else {System.out.println("⽂件不存在!");}}3,public static List<File> getFileList(String strPath) {File dir = new File(strPath);File[] files = dir.listFiles(); // 该⽂件⽬录下⽂件全部放⼊数组if (files != null) {for (int i = 0; i < files.length; i++) {String fileName = files[i].getName();if (files[i].isDirectory()) { // 判断是⽂件还是⽂件夹getFileList(files[i].getAbsolutePath()); // 获取⽂件绝对路径} else if (fileName.endsWith("avi")) { // 判断⽂件名是否以.avi结尾String strFileName = files[i].getAbsolutePath();System.out.println("---" + strFileName); filelist.add(files[i]);} else {continue;}}}return filelist;}。