我在用File类创建文件夹时,出现死循环、无限嵌套创建子文件夹,且创建的文件夹无法删除。
关键代码如下:
public void copy(File f) throws IOException {
String s2, s3, s4;
File file = new File(f1);
File file2 = new File(f2);
if (file.isDirectory()) {
s2 = file.getName(); //得到当前文件名
s3 = file2.getAbsolutePath(); //获取要创建文件的绝对路径名
s4 = s3 + "/" + s2;
File ff = new File(s4);
ff.mkdirs(); //创建文件夹
f1 = ff.getAbsolutePath(); //将创建的文件夹的绝对路径赋给 f1,f2
f2 = ff.getAbsolutePath();
copy(ff); //递归
}
}
结果是创建的文件夹里又有文件夹一直无限循环创建下去,强制结束程序,删除刚创建的文件夹却弹出‘文件路径名太长无法删除文件夹’。
解决办法:
出现死循环是因为递归没有结束条件,加个结束条件就可以了;下面是删除因为“文件路径名太长而无法删除”的文件夹的代码:
import java.io.File;
/**
* 无限删除文件夹,解救无限创建的子文件夹删除不了的问题
* @author 小苗
*
*/
public class ForeverDelete {
//删除文件夹方法
private void deleteDir(File file) {
if (file.listFiles().length == 0)
file.getAbsoluteFile().delete();
}
//删除文件方法
public void deleteFile(File file) {
File[] temp = file.listFiles();
for (int i = 0; i < temp.length; i++) {
System.out.println(temp[i].getName());
if (temp[i].isDirectory()) {
if (temp[i].listFiles().length != 0)
this.deleteFile(temp[i]); //如果 文件夹里不为空 递归调用 方法
this.deleteDir(temp[i]);
} else {
temp[i].delete();
}
}
}
public static void main(String[] args) {
ForeverDelete m = new ForeverDelete();
m.deleteFile(new File("D:\\system32"));
}
}
分享到:
相关推荐
最近电脑上不知怎么出现了无限嵌套的文件夹,使用网上的教程: 1.Windows自带命令:Robocopy /MIR CLionProj_new CLionProj 删除无效: 2.写python代码删除: import os def delete_folder(path): if os.path....
通过以上介绍可以看出,在Java中,利用`java.io.File`类可以轻松地完成创建和删除文件及文件夹的操作。需要注意的是,对于删除文件夹的操作,如果文件夹非空,则需要先递归删除其中的所有文件和子文件夹后才能删除该...
总结来说,创建和删除Android SD卡上的文件夹涉及对文件系统的操作,包括`File`对象的使用以及相应的文件操作方法。而利用ListView和BaseAdapter,可以方便地在界面上展示这些文件夹,并进行交互操作。在开发过程中...
### Java创建和删除文件夹与文件的知识点 #### 一、引言 在Java编程语言中,对文件系统的操作是一项非常基础且重要的功能。本文档将详细介绍如何使用Java来创建和删除文件夹以及文件,包括具体的实现代码和注意事项...
在C#编程环境中,开发Windows桌面应用程序时,我们经常需要处理文件和文件夹的操作,例如创建、删除、读取和写入。在这个场景下,`WinForm`是用于构建图形用户界面(GUI)的一种工具。下面我们将详细探讨如何在C#的...
本文将深入探讨如何在VS2017中编写代码来删除文件夹及其包含的所有文件,包括递归处理嵌套的子文件夹。 首先,我们需要了解Windows API中的关键函数,如`FindFirstFile`、`FindNextFile`和`RemoveDirectory`。这些...
在VB(Visual Basic)编程中,创建目录以及在目录下创建文件夹和文件是一项常见的任务。这涉及到操作系统交互,特别是文件系统操作。VB提供了丰富的API函数和类库来实现这些功能。下面我们将深入探讨如何使用VB来...
`File`类提供了多种方法来操作文件系统,包括创建、删除文件或目录等。在本例中,我们关注的是如何通过`mkdirs()`方法来创建文件夹。 ### 创建文件夹的基本步骤 1. **定义文件路径**:首先需要明确想要创建文件夹...
- 在创建文件夹时,还可以设置特定的权限,比如使用`Files.createDirectories(Paths.get(fp.getAbsolutePath()), FileAttribute... attrs)`方法来创建带有特定权限的文件夹。 #### 五、总结 本文介绍了如何在Java...
jcifs是一个开源的Java库,它允许Java应用程序通过CIFS协议与远程文件系统进行交互,比如创建、读取、写入和删除文件或文件夹。本文将详细讲解如何使用jcifs在远程机器上创建文件夹,以及相关的知识点。 首先,我们...
### Python根据TXT文本批量创建文件夹 在日常工作中,我们经常需要处理大量文件或文件夹的组织工作。例如,在项目管理、数据分类等场景中,手动创建数百个文件夹不仅耗时而且容易出错。因此,利用编程语言自动化这...
在Qt编程环境中,创建文件夹和文本文件是常见的任务,特别是在开发桌面应用程序时。Qt库提供了丰富的文件系统操作功能,让我们能够轻松实现这些操作。以下将详细介绍如何在Qt中建立文件夹并创建TXT文档。 首先,...
使用java.io.File类可以创建文件夹。例如: if (!(new java.io.File(Save_Location).isDirectory())) { new java.io.File(Save_Location).mkdir(); new java.io.File(Save_Location+"gmcc\\").mkdir(); } else { ...
在Java编程中,创建文件夹和文件是一项常见的任务,尤其在处理Web应用时,如上传和下载文件。下面将详细解释如何使用Java来创建文件夹、文件以及删除文件。 首先,要创建一个文件夹,Java提供了`java.io.File`类。...
Android 无法创建File文件 ,在上传图片的时候报错,提示file文件夹未空或在手机清空缓存删除文件夹后 文件夹无法创建 使用file.mkdirs()方法 返回一直是false 提供的功法可以直接解决该问题
本教程将深入讲解如何使用QT进行FTP(File Transfer Protocol)操作,包括文件的上传、下载、创建文件夹以及删除目录。 FTP是一种基于TCP协议的应用层协议,用于在Internet上进行文件传输。QT库提供了...
根据提供的文件信息,本文将详细解释Java中如何利用文件流动态创建文件夹或文件的关键知识点。主要内容包括: 1. Java创建文件的基本原理。 2. 如何使用`java.io.File`类来创建文件与目录。 3. 代码示例分析:创建...
File 类在Java中是用于操作文件和目录的基础类,提供了丰富的功能来创建、删除、重命名文件以及判断文件属性等。下面将详细讲解 `File` 类的创建方式及其相关成员方法。 ### 1. 文件对象的创建 创建 `File` 对象...
通过熟练掌握FSO对象的使用,你可以创建、删除、复制、移动文件和文件夹,为你的网站添加更多的功能和实用性。在进行此类操作时,务必注意代码的健壮性和安全性,以防止潜在的恶意操作或意外数据丢失。
创建了文件夹之后,你可以使用`File`类的方法来创建、读取、写入或删除文件。例如,要在刚刚创建的文件夹中创建一个新文件: ```java File newFile = new File(appFolder, "example.txt"); if (!newFile.exists())...