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 文件递归删除 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": ...
递归地删除指定目录下的文件或子目录,跳过属性为只读的文件或目录。开发语言:VC6.0。
递归删除指定文件夹下的指定文件夹及文件,如删除文件夹中的所有.svn的文件夹及文件
本代码使用c语言,可执行递归删除指定文件夹下所有的文件(包含文件以及文件夹)的操作,注释详细,易于使用或修改
so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...
当递归删除文件夹时,会把自己文件夹也删除掉,比如要删除E:/testTemp/qftp 这个文件夹下多有文件,但会把qftp这个文件夹删除,本程序改进后将不删除qftp文件夹,但qftp文件夹下的所有文件都会删除
这是一个使用java开发了类,可以递归删除文件目录。
递归删除 实现删除文件 文件夹以及下面的文件内容
递归某个目录,删除指定文件。这里是删除pdb文件的例子。
递归删除列表文件以外的所有文件源代码,需要的可以下载学习,希望对你有用。
输入一个指定的文件夹位置,选择指定的文件夹类型,选择指定的文件种类,删除指定类型的文件夹,删除指定类型的文件。支持文件夹里面的深度搜索,深度删除
一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子
将文件放在要删除svn文件的根目录,然后双击kill-svn.bat即可。
c#中递归删除文件夹和子文件夹 可用于删除.svn文件夹 例子中是删除crm文件夹及其子文件夹下的.svn文件夹
java:用递归方法删除文件
File类操作递归删除 大型文件秒删 无法找回 千万不要删系统盘
使用递归删除文件
java递归删除文件和文件夹.pdf
递归方式删除文件,超级简单