您的位置:首页 > 编程语言 > Java开发

java遍历文件夹并复制文件到指定目录

2012-05-21 21:51 756 查看
转载:http://www.open-open.com/home/space-2869-do-blog-id-5781.html

 

package com.czp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JTextArea;

public class CopyFolder {

//允许复制的文件类型
public static String[] filterFile = {".java",".xml",".xdl",".properties",".sql",".jupiter",".wsdl"};
private  long total = 0l;
//private static Pattern pattern = Pattern.compile("[A-z][:]/[A-z]*/OMC[0-9A-z]{0,}");

public static void main(String[] args) throws Exception {

Scanner scanner = new Scanner(System.in);
System.out.println("Enter src folder:");
String srcStr = scanner.next();
String destStr;
System.out.println("Now enter dest folder:");
destStr = scanner.next();
String answer = null;
do{
File src = new File(srcStr);
File des = new File(destStr);
new CopyFolder().copyFolder(src, des,new String[]{".java",".xml",".xdl",".properties",".sql",".jupiter"},null);
System.out.println("Continue ?y or n");
answer = scanner.next();
}while(answer.equalsIgnoreCase("Y"));
scanner.close();
}

/**
*
* @param folder
* @param filterFile
* @param status
* @throws Exception
*/
public void copyFolder(File srcFolder,File destFolder,String[] filterFile, JTextArea status) throws Exception
{
File[] files = srcFolder.listFiles();
for (File file : files)
{
if(file.isFile())
{
String pathname = destFolder+File.separator+file.getName();

for (String suff : filterFile)
{
if(pathname.endsWith(suff))
{
File dest = new File(pathname);
File destPar =  dest.getParentFile();
destPar.mkdirs();
if(!dest.exists())
{
dest.createNewFile();
}
copyFile(file, dest,status);
}
}
}else{
copyFolder(file, destFolder, filterFile,status);
}
}
}
/***
* copy file
*
* @param src
* @param dest
* @param status
* @throws IOException
*/
private void copyFile(File src, File dest, JTextArea status) throws Exception {
BufferedInputStream reader = null;
BufferedOutputStream writer = null;
try {
reader = new BufferedInputStream(new FileInputStream(src));
writer = new BufferedOutputStream(new FileOutputStream(dest));
byte[] buff = new byte[reader.available()];
while ((reader.read(buff)) != -1) {
writer.write(buff);
}
total++;
String temp = "\ncopy:\n"+src+"\tsize:"+src.length()+"\nto:\n"+dest+"\tsize:"+dest.length()+"\n complate\n totoal:"+total;
System.out.println(temp);
//status.append(temp);
} catch (Exception e) {
throw e;
} finally {
writer.flush();
writer.close();
reader.close();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐