递归(Recursion),就是方法调用自身。
对于递归来说,一定有一个出口,让递归结束,只有这样才能保证不出现死循环。
递归计数器:
private static int time;
public static void recursion()
{
time++;
recursion();
time--;
}
一个简单的递归实例:阶乘
public static int factorial(int number) { int result; if(number == 1) //递归出口 { result = 1; } else { result = number * factorial(number - 1); } return result; }
删除当前目录及其子目录下所有文件和目录
public static void deleteAll(File file) { if(file.isFile() || file.list().length == 0) //递归出口 { file.delete(); } else { File[] files = file.listFiles(); for(File f : files) { deleteAll(f); f.delete(); //删除最后的空目录 } } }
列出当前目录及子目录的所有文件及目录
/*粗略的版本*/ public static void listAll(File file) { //递归出口,file为文件或空目录时打印出filename if(file.isFile() || file.list().length == 0) { System.out.println(file.getName()); } else { //先打印父目录 System.out.println(file.getName()); File[] files = file.listFiles(); for(File f : files) { listAll(f); } } }
/*带Tab格式的排序的版本*/ //用于判断目录或文件所处的层次 private static int time; public static void listAll(File file) { if(file.isFile() || file.list().length == 0) { System.out.println(getTabs(time) + file.getName() + (file.isFile() ? "" : "\\")); } else { System.out.println(getTabs(time) + file.getName() + "\\"); File[] files = file.listFiles(); sort(files); for(File f : files) { time++; listAll(f); time--; } } } //判断需要加多少 tab的方法 private static String getTabs(int time) { StringBuffer buffer = new StringBuffer(); for(int i = 0; i < time; i++) { buffer.append("\t"); } return buffer.toString(); } // 整理文件,使得目录排在文件之前 private static void sort(File[] files) { ArrayList<File> sorted = new ArrayList<File>(); // 寻找到所有的目录 for (File f : files) { if (f.isDirectory()) { sorted.add(f); } } // 寻找到所有的文件 for (File f : files) { if (f.isFile()) { sorted.add(f); } } files = sorted.toArray(new File[files.length]); }
相关推荐
这段代码首先列出目录`Test`中的所有文件和子目录,然后逐个处理。对于每个子项,如果是文件则直接删除,如果是子目录则递归调用`RemoveNonEmptyDirectory`。所有子项处理完毕后,尝试删除`Test`目录自身。 这样的...
- **文件删除**:调用`boolean delete(Path p, boolean recursive)`,其中`recursive`参数决定是否递归删除目录。 - **文件遍历**:使用`FileStatus[] listStatus(Path f)`获取目录下所有文件的状态,再遍历这些状态...
- **读 (r)**:允许查看文件内容或列出目录内容。 - **写 (w)**:允许修改文件内容或创建/删除目录中的文件。 - **执行 (x)**:允许执行文件作为程序,或进入目录。 每种文件类型(普通文件、目录和特殊文件)对于...
1. 列出`/etc`目录下的所有文件名称:使用`ls -a /etc`命令,其中`-a`选项表示显示隐藏文件。 2. 创建文件`file1`和`file2`并复制到`/home`目录下:首先创建文件,`touch /home/file1 /home/file2`,然后复制,`cp ...
通过使用`FtpWebRequest`类并结合递归算法,可以有效地解决删除包含子文件夹和文件的FTP目录问题。这种方法不仅适用于C#,也适用于其他.NET语言。 通过以上步骤,我们可以高效且准确地完成FTP目录的删除工作。需要...
os模块提供了许多与操作系统相关的函数,包括列出目录、创建删除文件或目录等。在这个案例中,我们主要使用`os.walk()`函数,它可以生成目录树中的文件名。 ```python import os def find_mp4_files(path): file_...
我们可以递归地遍历每个子目录,直到所有文件都被列出。例如: ```vba Sub ListFilesInDirectory(ByVal folderPath As String) Dim folder As Folder Dim subFolder As Folder Dim file As File Set folder ...
默认情况下,`QDir`会列出所有内容(包括文件和目录)。要删除文件和子目录,不需要进行此步。 3. **列举目录内容**:调用`entryList()`方法获取目录内的文件和子目录列表。例如: ```cpp QStringList entries = ...
- `dir /ad/b/s d:\test\`:列出 `d:\test` 目录及其子目录下的所有空目录。 - `sort /r`:按逆序排序目录列表。 - `>d:\kill.txt`:将结果保存到文本文件。 - `For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i...
这里要注意,删除操作通常是不可逆的,所以在实际应用中要谨慎处理,可以添加确认提示或者只列出待删除文件,供用户确认。 4. **错误处理**:在循环过程中,可能会遇到权限问题、文件被占用等情况导致无法删除。...
* -r, -R, --recursive 指示 rm 将参数中列出的全部目录和子目录均递归地删除。 * -v, --verbose 详细显示进行的步骤 * --help 显示此帮助信息并退出 * --version 输出版本信息并退出 实例一:删除文件 file,系统...
这个程序不仅遍历了指定目录下的所有文件,还递归地处理了子目录。同时,它还输出了每个文件的完整路径和内容。如果你需要在其他操作系统(如Linux或MacOS)上运行,只需确保你的编译器支持`std::filesystem`库,...
- 在Windows中,`del /s` 命令可以递归删除指定目录下的文件,而`dir /b /s` 可以列出所有文件。 - 在Linux或macOS中,`find . -name "*.pdb" -delete` 可以找到当前目录下所有`.pdb`文件并删除。 - 使用Git时,...
本文将深入讲解如何使用PHP递归列出当前目录下所有文件的方法。 首先,我们定义一个名为`filelist`的函数,它接受两个参数:`$pathname`表示要列出文件的目录路径,`$i`则用来控制缩进级别,以便在输出时展示文件的...
在给定的部分内容中,我们可以看到一个完整的批处理脚本示例,它首先通过`@ECHO off`和`cls`命令准备执行环境,然后列出了多个要删除的文件,并使用了`del`命令的不同参数组合来实现批量删除。最后,通过`ping`和`...
`os`模块提供了许多与操作系统交互的功能,包括列出目录内容、创建和删除目录等;`shutil`模块则提供了高级的文件和文件集合操作,例如复制和移动文件。 递归在处理目录结构时是必不可少的,因为文件系统通常具有...
同时,为了防止误删重要文件,可以考虑在删除前询问用户确认,或者只列出待删除文件供用户审查。 以上就是使用C++实现删除临时文件的基本步骤。`deleteTempFile.cpp`和`deleteTempFile.h`文件分别包含了这个功能的...
- **rm**:删除文件或目录。 - `rm file_name`:删除名为file_name的文件。 - `rm -r directory_name`:递归删除目录及其内容,需要用户确认。 - `rm -rf directory_name`:强制递归删除目录及其内容,不会询问...
- `ls`:列出当前目录下的文件和子目录。 - `ls -l`:以长格式列出目录内容。 - `ls -a`:显示隐藏文件(文件名以`.`开头)。 - **查看文件内容**: - `cat filename`:查看文件内容。 - `less filename`:分页...