`
miaoge
  • 浏览: 110413 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类

File类创建文件夹时,出现死循环、无限嵌套创建子文件夹,且创建的文件夹无法删除

F# 
阅读更多

我在用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"));
	}
}

 

分享到:
评论

相关推荐

    Windows删除无线嵌套文件夹或错误路径文件

    最近电脑上不知怎么出现了无限嵌套的文件夹,使用网上的教程: 1.Windows自带命令:Robocopy /MIR CLionProj_new CLionProj 删除无效: 2.写python代码删除: import os def delete_folder(path): if os.path....

    java创建和删除文件夹、文件

    通过以上介绍可以看出,在Java中,利用`java.io.File`类可以轻松地完成创建和删除文件及文件夹的操作。需要注意的是,对于删除文件夹的操作,如果文件夹非空,则需要先递归删除其中的所有文件和子文件夹后才能删除该...

    Android-SD卡文件夹创建和删除实现

    总结来说,创建和删除Android SD卡上的文件夹涉及对文件系统的操作,包括`File`对象的使用以及相应的文件操作方法。而利用ListView和BaseAdapter,可以方便地在界面上展示这些文件夹,并进行交互操作。在开发过程中...

    java创建和删除文件夹、文件.doc

    ### Java创建和删除文件夹与文件的知识点 #### 一、引言 在Java编程语言中,对文件系统的操作是一项非常基础且重要的功能。本文档将详细介绍如何使用Java来创建和删除文件夹以及文件,包括具体的实现代码和注意事项...

    c# 创建文件夹 文件 写入文件 读取文件 读取图片

    在C#编程环境中,开发Windows桌面应用程序时,我们经常需要处理文件和文件夹的操作,例如创建、删除、读取和写入。在这个场景下,`WinForm`是用于构建图形用户界面(GUI)的一种工具。下面我们将详细探讨如何在C#的...

    vs2017 下 windows C/C++ 删除文件夹以及文件夹里的所有文件,遍历嵌套删除文件及文件夹

    本文将深入探讨如何在VS2017中编写代码来删除文件夹及其包含的所有文件,包括递归处理嵌套的子文件夹。 首先,我们需要了解Windows API中的关键函数,如`FindFirstFile`、`FindNextFile`和`RemoveDirectory`。这些...

    VB创建目录及目录下文件夹和文件

    在VB(Visual Basic)编程中,创建目录以及在目录下创建文件夹和文件是一项常见的任务。这涉及到操作系统交互,特别是文件系统操作。VB提供了丰富的API函数和类库来实现这些功能。下面我们将深入探讨如何使用VB来...

    java代码新建文件夹

    `File`类提供了多种方法来操作文件系统,包括创建、删除文件或目录等。在本例中,我们关注的是如何通过`mkdirs()`方法来创建文件夹。 ### 创建文件夹的基本步骤 1. **定义文件路径**:首先需要明确想要创建文件夹...

    已知路径下创建文件夹

    - 在创建文件夹时,还可以设置特定的权限,比如使用`Files.createDirectories(Paths.get(fp.getAbsolutePath()), FileAttribute... attrs)`方法来创建带有特定权限的文件夹。 #### 五、总结 本文介绍了如何在Java...

    Jcifs创建远程文件夹的例子

    jcifs是一个开源的Java库,它允许Java应用程序通过CIFS协议与远程文件系统进行交互,比如创建、读取、写入和删除文件或文件夹。本文将详细讲解如何使用jcifs在远程机器上创建文件夹,以及相关的知识点。 首先,我们...

    python根据txt文本批量创建文件夹

    ### Python根据TXT文本批量创建文件夹 在日常工作中,我们经常需要处理大量文件或文件夹的组织工作。例如,在项目管理、数据分类等场景中,手动创建数百个文件夹不仅耗时而且容易出错。因此,利用编程语言自动化这...

    qt中建立文件夹并且在文件夹中建立txt文档

    在Qt编程环境中,创建文件夹和文本文件是常见的任务,特别是在开发桌面应用程序时。Qt库提供了丰富的文件系统操作功能,让我们能够轻松实现这些操作。以下将详细介绍如何在Qt中建立文件夹并创建TXT文档。 首先,...

    jsp页面创建文件夹

    使用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创建文件夹文件.doc

    在Java编程中,创建文件夹和文件是一项常见的任务,尤其在处理Web应用时,如上传和下载文件。下面将详细解释如何使用Java来创建文件夹、文件以及删除文件。 首先,要创建一个文件夹,Java提供了`java.io.File`类。...

    new file()创建不出文件 解决 Android无法创建File问题

    Android 无法创建File文件 ,在上传图片的时候报错,提示file文件夹未空或在手机清空缓存删除文件夹后 文件夹无法创建 使用file.mkdirs()方法 返回一直是false 提供的功法可以直接解决该问题

    QT ftp上传下载,创建文件夹,删除目录

    本教程将深入讲解如何使用QT进行FTP(File Transfer Protocol)操作,包括文件的上传、下载、创建文件夹以及删除目录。 FTP是一种基于TCP协议的应用层协议,用于在Internet上进行文件传输。QT库提供了...

    java 创建文件夹或文件

    根据提供的文件信息,本文将详细解释Java中如何利用文件流动态创建文件夹或文件的关键知识点。主要内容包括: 1. Java创建文件的基本原理。 2. 如何使用`java.io.File`类来创建文件与目录。 3. 代码示例分析:创建...

    File类创建文件与文件夹.docx

    File 类在Java中是用于操作文件和目录的基础类,提供了丰富的功能来创建、删除、重命名文件以及判断文件属性等。下面将详细讲解 `File` 类的创建方式及其相关成员方法。 ### 1. 文件对象的创建 创建 `File` 对象...

    ASP创建文件夹复制文件

    通过熟练掌握FSO对象的使用,你可以创建、删除、复制、移动文件和文件夹,为你的网站添加更多的功能和实用性。在进行此类操作时,务必注意代码的健壮性和安全性,以防止潜在的恶意操作或意外数据丢失。

    在SDCard上创建文件夹

    创建了文件夹之后,你可以使用`File`类的方法来创建、读取、写入或删除文件。例如,要在刚刚创建的文件夹中创建一个新文件: ```java File newFile = new File(appFolder, "example.txt"); if (!newFile.exists())...

Global site tag (gtag.js) - Google Analytics