JAVA 源代码 【指定文件夹 搜索指定格式的后缀名 拷贝到 指定目录】

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

public class CopyFile {
	
	/** 
     * 复制单个文件 
     * @param oldPath String 原文件路径 如:c:/fqf.txt 
     * @param newPath String 复制后路径 如:f:/fqf.txt 
     * @return boolean 
     */ 
   public void copyFile(String oldPath, String newPath) { 
       try { 
           int bytesum = 0; 
           int byteread = 0; 
           File oldfile = new File(oldPath); 
           if (oldfile.exists()) { //文件存在时 
               InputStream inStream = new FileInputStream(oldPath); //读入原文件 
               FileOutputStream fs = new FileOutputStream(newPath); 
               byte[] buffer = new byte[1444]; 
               int length; 
               while ( (byteread = inStream.read(buffer)) != -1) { 
                   bytesum += byteread; //字节数 文件大小 
                   System.out.println(bytesum); 
                   fs.write(buffer, 0, byteread); 
               } 
               inStream.close(); 
           } 
       } 
       catch (Exception e) { 
           System.out.println("复制单个文件操作出错"); 
           e.printStackTrace(); 

       } 

   } 

}


import java.io.File; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class FileViewer {

    /**
     * 读取文件夹下所以文件
     *
     * @param dirPath
     * @param fileTypes
     * @return
     */
    public static List<String> getAllFilePathByDir_FilterByFileType(String dirPath,
            List<String> fileTypes,String destination) {

        String localClassFilePath = FileViewer.class.getResource("/").getPath();
        String contextFilePath = localClassFilePath.substring(1, localClassFilePath.length() - 16);
        contextFilePath = contextFilePath.replace("/", "\\");

        List<String> filePathList = new ArrayList<String>();
        for (int index = 0; index < fileTypes.size(); index++) {
            fileList = new ArrayList<String>();
            List arrayList = FileViewer.getListFiles(dirPath, fileTypes.get(index), true);
            if (arrayList.isEmpty()) {
                System.out.println("没有符号要求的文件");
            } else {
                for (Iterator i = arrayList.iterator(); i.hasNext();) {
                    String temp = (String) i.next();
                    temp = temp.replace(contextFilePath, "");//把根路径去掉 
                    
                    System.out.println(temp);
                	CopyFile cp=new CopyFile();
            		cp.copyFile(temp, destination+Util.GetReName(temp));
                    
                    filePathList.add(temp);
                }
            }
        }
        for (int replaceIndex = 0; replaceIndex < filePathList.size(); replaceIndex++) {
            filePathList.set(replaceIndex, filePathList.get(replaceIndex).replace("\\", "/"));
        }
        return filePathList;
    }
    public static List<String> fileList = new ArrayList<String>();

    /**
     * 添加文件后缀名称
     *
     * @return
     */
    public static List<String> suffixlist(String suffix) {
        List<String> list = new ArrayList<String>();
        String[] types=suffix.split(",");
        for(int i=0;i<types.length;i++)
        {
        	list.add(types[i]);
        }
        return list;
    }

    /**
     *
     * @param path 文件路径
     * @param suffix 后缀名
     * @param isdepth 是否遍历子目录
     * @return
     */
    public static List getListFiles(String path, String suffix, boolean isdepth) {
        File file = new File(path);
        return FileViewer.listFile(file, suffix, isdepth);
    }

    public static List listFile(File f, String suffix, boolean isdepth) {
        // 是目录,同时需要遍历子目录 
        if (f.isDirectory() && isdepth == true) {
            File[] t = f.listFiles();
            for (int i = 0; i < t.length; i++) {
                listFile(t[i], suffix, isdepth);
            }
        } else {
            String filePath = f.getAbsolutePath();
            if (suffix != null) {
                int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引 
                String tempsuffix = "";

                if (begIndex != -1)// 防止是文件但却没有后缀名结束的文件 
                {
                    tempsuffix = filePath.substring(begIndex + 1, filePath
                            .length());
                }
                if (tempsuffix.equals(suffix)) {
                    fileList.add(filePath);
                }
            } else {
                // 后缀名为null则为所有文件 
                fileList.add(filePath);
            }
        }
        return fileList;
    }

}


import java.util.List;


public class Test {

	public static void main(String[] args) {
		
		 List<String> listResult = FileViewer.getAllFilePathByDir_FilterByFileType("D:\\lib", FileViewer.suffixlist("jar"),"D:\\cordys\\");
	      
	    }
	
	
	

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前天正好要找一个本地文件, 就用java实现了, 全盘的本地文件搜索功能. 代码不依赖其它第三方jar, 连日志都用system.out了. 初学者可以了解下. 主程序: LocalFileSearcher.java LocalFileSearcher searcher = new LocalFileSearcher(); searcher.doSearch("迅雷"); log如下: Start search keyword: 迅雷 Start search all drivers! success: E:\迅雷下载 success: F:\迅雷下载 success: C:\Users\Administrator\Desktop\迅雷.lnk success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Libraries\迅雷下载.library-ms success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷影音.lnk success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷影音.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\卸载迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷.lnk Search costs : 3861(ms) File searched : 154848 Folder searched: 31463 Success match : 16 后续再更新完善

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值