`
郑云飞
  • 浏览: 818259 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文件的递归删除

阅读更多
package hashMap;
import java.io.*;
/**
 * 源文件复制的同名的目录下,创建源文件的副本
 * @author 郑云飞
 *data:2010年9月29日22:25
 *步骤:1.将源文件重命名
 *     2.将重命名后的文件复制的一个临时盘符中去
 *     3.在将重命名的源文件重新回复原名称
 *     4.将重新回复名称后的文件再次复制到目标路径中去
 *     5.递归删除临时盘符中重命名后的文件
 */
public class FileCopy
{
	public static void main(String[] args) throws IOException
	{
		File sourceFile = new File("F:/123/456");
		File targetFile = new File("F:/123/456");
		if(sourceFile.getName().equals(targetFile.getName()))
		{
			System.out.println("文件已经存在,是否创建副本:");
			System.out.println("*************1  是*************其他键  否*********");
			char ok=(char)System.in.read();
			if(ok=='1')
			{
    			File copyfFile=new File(sourceFile.getAbsolutePath()+"附件");//定义一个文件的副本
    		    sourceFile.renameTo(copyfFile);//步骤1
    			sourceFile=copyfFile;//步骤1
    			File ff=new File("C:/"+sourceFile.getParent().substring(3));//创建一个临时盘符
    		   copy(sourceFile,ff);//步骤2
    		   File temp=new File("C:/"+sourceFile.getParent().substring(3)+"/"+sourceFile.getName());//步骤
    		   temp.renameTo(new File("C:/"+targetFile.getParent().substring(3)+"/"+targetFile.getName()));//步骤3
    		   File f3=new File("C:/"+targetFile.getParent().substring(3)+"/"+targetFile.getName());
    		   copy(f3,sourceFile.getParentFile());//步骤4
    		   System.out.println(f3.getParent()+"******************************");
    		   if(f3.getParent().length()==3)
    		   {
    			   del(f3);
    		   }
    		   else 
    		   {
    			   del(f3.getParentFile());//步骤5
			   }
    		  
			}
		}
		else
		{
			copy(sourceFile, targetFile);
		}
	 
	}
	/**
	 * 文件的递归复制
	 * @param sourceFile
	 * @param targetFile
	 */
	public static void copy(File sourceFile, File targetFile)
	{
		if(sourceFile.exists())
		{
			if(!targetFile.exists())
			{
				targetFile.mkdir();
			}
			File tarpath = new File(targetFile, sourceFile.getName());
			if (sourceFile.isDirectory())//如果源文件是一个目录
			{
				tarpath.mkdir();//创建此目录到目标路径
				System.out.println("目录"+tarpath.getName()+"赋值完成");
				File[] dir = sourceFile.listFiles();//获取源文件下属的子文件
				for(File f:dir)
				{
					copy(f,tarpath);//递归调用所有的子目录下面的文件
				}
			} 
			else//如果是文件,拷贝文件到相应的目录下面
			{
				try
				{
					InputStream is = new FileInputStream(sourceFile);
					OutputStream os = new FileOutputStream(tarpath);
					byte[] buf = new byte[1024];
					int len = 0;
					while ((len=is.read(buf))!=-1)//当缓冲区存放的有内容的时候
					{
						os.write(buf,0,len);//将缓冲区的内存写入输出流os中
					}
					System.out.println("文件"+tarpath.getName()+"复制完成");
					if(is!=null)
					{
					 is.close();
					}
					if(os!=null)
					{
					 os.close();
					}
				} 
				catch (Exception e)
				{
					e.printStackTrace();
				}	
		  }
	  }
	  else 
	  {
		System.out.println("源文件不存在");
		System.exit(0);
	  }
   }
	/**
	 * 文件的递归删除
	 * @param sourceFile
	 * @throws IOException
	 */
	public static void del(File sourceFile) throws IOException
	{
		if(sourceFile.exists())
		{
			if (sourceFile.isDirectory())
			{
				sourceFile.deleteOnExit();
				File[] dir = sourceFile.listFiles();
				for(File f:dir)
				{
					del(f);
				}
			} 
			else
			{
				sourceFile.deleteOnExit();
			}
		}
		else
		{
			System.out.println("源文件不存在");
		}
	}
}

 

分享到:
评论

相关推荐

    .svn 文件递归删除

    对项目中的 .svn 文件递归删除 def walk(path): for item in os.listdir(path): subpath = os.path.join(path, item); mode = os.stat(subpath)[stat.ST_MODE]; if stat.S_ISDIR(mode): if item==".svn": ...

    递归删除文件或子目录

    在这个场景中,"递归删除文件或子目录"指的是编写一个程序,它能够遍历并删除指定目录下的所有文件和子目录,包括它们的子孙目录,但会跳过那些被标记为只读属性的文件和目录。这个功能在清理或整理文件系统时非常...

    递归删除指定类型的文件夹,递归删除指定类型的文件

    在IT领域,递归删除是一种常见且强大的操作,主要用于清理特定类型或结构的文件和文件夹。本主题主要探讨如何实现“递归删除指定类型的文件夹”和“递归删除指定类型的文件”,以及如何在文件夹内部进行深度搜索和...

    递归删除指定文件夹下的指定文件夹及文件

    递归删除指定文件夹下的指定文件夹及文件,如删除文件夹中的所有.svn的文件夹及文件

    使用c语言递归删除指定文件夹下所有的文件(包含文件以及文件夹)

    本代码使用c语言,可执行递归删除指定文件夹下所有的文件(包含文件以及文件夹)的操作,注释详细,易于使用或修改

    QT递归删除文件夹,而不删除自己文件夹

    当递归删除文件夹时,会把自己文件夹也删除掉,比如要删除E:/testTemp/qftp 这个文件夹下多有文件,但会把qftp这个文件夹删除,本程序改进后将不删除qftp文件夹,但qftp文件夹下的所有文件都会删除

    递归删除指定文件例子

    在IT行业中,我们经常需要对文件系统进行操作,其中...这些都与Windows开发和程序执行相关,但在这个特定示例中,主要关注的是递归删除pdb文件的方法。通过了解这些基础知识,我们可以更好地管理和维护我们的开发环境。

    JAVA递归删除目录失败

    so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...

    递归删除文件目录的方法

    这是一个使用java开发了类,可以递归删除文件目录。

    递归删除文件

    递归删除 实现删除文件 文件夹以及下面的文件内容

    递归删除列表文件以外的所有文件源代码.rar

    在这个"递归删除列表文件以外的所有文件源代码"的例子中,我们可以看到是用Delphi语言实现的。 Delphi是一种基于Object Pascal的集成开发环境(IDE),它提供了强大的Windows应用程序开发能力。源码中可能包含以下...

    java递归删除文件和文件夹.pdf

    "Java 递归删除文件和文件夹" Java 递归删除文件和文件夹是 Java 编程中一个常见的操作。该操作需要使用 Java 的 File 类来实现,通过递归调用来删除文件和文件夹。 File 类 在 Java 中,File 类是用于表示文件和...

    java递归实现删除文件夹

    但如果目录非空,该方法将失败,除非递归删除所有子文件和子目录。 3. **递归删除实现** - 首先,我们需要检查给定的文件或目录是否存在。如果不存在,无需执行删除操作。 - 然后,使用`isDirectory()`方法判断...

    (java递归)删除文件

    在本文中,我们将深入探讨如何使用递归方法在Java中删除文件,这通常涉及到目录及其包含的所有文件和子目录的删除。以下是根据提供的代码片段提炼出的关键知识点: ### 关键知识点一:递归函数设计 递归函数`find...

    目錄文件創建删除 目錄文件遞歸删除

    本话题主要关注“目錄文件创建删除”以及“目录文件递归删除”。首先,我们来理解这两个概念。 **目录文件创建**: 在操作系统中,目录(又称文件夹)是用来组织和管理文件的一种方式。创建目录通常使用`mkdir`命令...

    递归删除.svn文件

    将文件放在要删除svn文件的根目录,然后双击kill-svn.bat即可。

    递归删除.svn

    标题中的“递归删除.svn”指的是在编程或文件管理操作中,如何使用递归方法来删除一个项目或目录下的所有.SVN子目录。.SVN是Subversion版本控制系统的一个隐藏目录,它存储了版本控制的相关信息。在某些情况下,用户...

    c#中递归删除文件夹和子文件夹

    c#中递归删除文件夹和子文件夹 可用于删除.svn文件夹 例子中是删除crm文件夹及其子文件夹下的.svn文件夹

    Test File递归删除.java

    File类操作递归删除 大型文件秒删 无法找回 千万不要删系统盘

Global site tag (gtag.js) - Google Analytics