剪切(使用File类的renameTo 方法和递归实现非空目录的剪切)

来源:互联网 发布:淘宝小号怎么申请 编辑:程序博客网 时间:2024/06/01 09:30

剪切(使用File类的renameTo 方法和递归实现非空目录的剪切)

package com.cn.recursion;import java.io.File;import java.io.IOException;public class CutDireaction {public static void main(String[] args) throws IOException {/** * 以下是File类方法的测试 *///renameTo()如果目标文件与源文件是在同一个路径下,那么renameTo()的作用是重命名/*File file = new File("f:/b.txt");File file2 = new File("f:/c.txt");System.out.println(file.renameTo(file2));File file5 = new File("f:/aaa");File file6 = new File("f:/bbb");System.out.println(file5.renameTo(file6));*///如果目标文件与源文件不是在同一个路径下,那么renameTo()的作用就是剪切//File file3 = new File("g:/b.txt");//File file4 = new File("f:/b.txt");//System.out.println(file3.renameTo(file4));//如果目标文件与源文件不是在同一个路径下,那么renameTo()的作用就是剪切,而且还不能操作文件夹,只能操作文件。/*File file7 = new File("f:/bbb");File file8 = new File("g:/bbb");System.out.println(file7.renameTo(file8));  //失败 false*///renameTo(File dest)重命名文件或文件夹,也可以操作非空的文件夹(相同路径),剪切(不同路径)时候不能操作非空的文件夹。/*File file9 = new File("f:/a");File file10 = new File("f:/c");//true//File file11 = new File("g:/c");//falseSystem.out.println(file9.renameTo(file10));*//*File src = new File("f:\\a");System.out.println(src.getName());*/// 使用File类和递归实现文件的剪切.File src = new File("f:\\a");//File dest = new File("f:/");File dest = new File("g:/");cutFile(src, dest);}/** * 使用File类和递归实现文件的剪切. * @param src * @param dest * @throws IOException  */private static void cutFile(File src, File destDir) throws IOException {//   f:/a        g:/if(!src.exists() || !destDir.exists()){System.out.println("指定的源目录或者目标目录不存在");return;}if(!src.isDirectory() || !destDir.isDirectory()){System.out.println("指定的源目录或者目标目录不是目录");return;}//得到源目录名String srcName = src.getName();//   a//根据源目录名创建新目录名File dest = new File(destDir, srcName);dest.mkdir();//创建目标目录     g:/a ............//遍历源目录File[] listFiles = src.listFiles();for(File f : listFiles){if(f.isFile()){File destFile = new File(dest, f.getName());//如果是子源文件,使用rename()方法移动至目标目录中,该方法同时会删除源目录中的文件(剪切)f.renameTo(destFile);//g:/a/a.txt  ....}else if(f.isDirectory()){// 如果是子目录,执行重复动作. 将源子目录 , 目标目录(父目录+//)cutFile(f, new File(dest, File.separator)); // f:/a/b     // g:/a/}}//删除源目录src.delete();}}


0 0
原创粉丝点击