java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式相关的知识,希望对你有一定的参考价值。

问题:使用递归方法
1.指定from为目录:fromPath=D:\abc; 目录下有a.txt., b.txt, c.html.d.java,文件夹(test)同时文件夹下同样f.txt , G..java等多种格式的,文件; 目标目录 E:\ABC;
要求:.过滤源目录下的TXT格式文档并且复制到目标目录并改格式为.java,将源目录下的子目录的符合条件的文件也同样操作,并复制到同名的文件夹(e:\ABC\test)下即将整个文件夹架构一并复制 ;
例子:将a.txt.,b.txt.复制到目标目录E:\ABC;并改格式,并将子目录test也复制到E:\ABC下,,test下包含原有的改名后的f.java;
2.指定from为文件:fromPath=D:\\abc.txt;同样复制后并改名,目标目录放置在文件夹E:\ABC下;

我自己写了下 ,最后结果只能实现:
当FROM为目录时,只能过滤根目录下的文件,子目录下文件复制不了;
当from为文件时,不能放到ABC的目录下,只是建立个同名的ABC文件并无后缀
如何将2个功能统一在一块呢?
贴上我的代码:
public class CopyIO
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
// TODO Auto-generated method stub
copyFiles("d:\\abc", "e:\\ABC");
System.out.println("复制成功");

/**
* 复制指定目录下.txt文件到目标目录下并改名为。java
* @param fromPath 源目录
* @param toPath 目标目录
* @throws IOException
*/
public static void copyFiles(String fromPath,String toPath) throws IOException
File mFile=new File(fromPath);

if (mFile.isDirectory())
File tFile=new File(toPath);
if (!tFile.exists()) tFile.mkdir();
File[] files=mFile.listFiles(new FilenameFilter()

@Override
public boolean accept(File dir, String name)
// TODO Auto-generated method stub
return name.endsWith(".txt");

);

for (File file : files)
copyFiles(file.toString(), toPath+File.separator+file.getName().replaceAll("\\.txt$", ".java"));
//copyFiles(file.toString(), toPath+File.separator+file.getName());此处实现不需改格式的方法



else
copy(fromPath, toPath);


public static void copy(String p1,String p2) throws IOException
//File t=new File(p2);
//File f=new File(p1);
//String filename=t.getAbsolutePath()+File.pathSeparator+f.getName();
//File f1=new File(p1);
//File f2=new File(p2);
DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream(p1)));
byte[] bytes=new byte[in.available()];
in.read(bytes);
DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(p2)));
out.write(bytes);
in.close();
out.close();

参考技术A 只考虑文件就可以,文件夹什么的 只要在创建文件时创建路径,不存在的就创建就好了

以上是关于java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式的主要内容,如果未能解决你的问题,请参考以下文章

用shell脚本递归遍历某个目录下的所有文件并移动到某个指定的目录中

Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹

使用java递归方法遍历指定目录下所有子目录和子文件

Java非递归的方式获取目录中所有文件(包括目录)

Python中如何遍历指定目录下的所有文件?

Java之递归遍历目录,修改指定文件的指定内容