zoukankan      html  css  js  c++  java
  • 遍历文件夹中文件

    工作中需要遍历文件夹,期初用java写,用File类中的实例方法遍历指定文件夹中文件,主要是图片,并将文件名写入指定文件,。

    测试了一下,60万需要用时:224700 豪秒,即224.7秒

    package ioOperation;
    import java.io.*;
    import java.util.*;

    public class FileScan {
            
        public static List<File> getFileList(String strPath,FileWriter fw) throws IOException {  
            File dir = new File(strPath);
     
            List<File> fileList = new ArrayList<File>();
            File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组  
            if (files != null) {  
                for (int i = 0; i < files.length; i++) {  
                    String fileName = files[i].getName();  
                    if (files[i].isDirectory()) { // 判断是文件还是文件夹  
    //                    getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径  
                         getFileList(files[i].getAbsolutePath(), fw);
                    } else if (fileName.endsWith("jpg")) { // 判断文件名是否以.jpg结尾
                          String strFileName = files[i].getName();
                    
                          String idcard = strFileName.substring((strFileName.indexOf("_")+1),strFileName.lastIndexOf("_"));
    //                    String strFileName = files[i].getAbsolutePath();
    //                    String fileName_detail = strFileName.substring(strFileName.lastIndexOf("\")+1);                    
                        
                        fw.write(idcard+" ");    
            
                        System.out.println("写文件成功: "+idcard);  
                        fileList.add(files[i]);  
                    } else {  
                        continue;  
                        }  
                    }  
            } else {
                fw.close();
            }
            return fileList;  
        }  

        public static void writeToFile(String strPath,String docPath) throws IOException {  
            
            FileWriter fw = new FileWriter(docPath);   

            long begin3 = System.currentTimeMillis();   
     
            getFileList(strPath,fw);
     
            fw.close();   

            long end3 = System.currentTimeMillis();   

            System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");   
        }
    }

    今天用python中的walk类试了一下,遍历60万并写入文件,用时: 27.841446938107133秒:

    python居然快一些,哈哈...

    #encoding:utf-8

    import os, time

    path = 'D:'+os.sep+'picture'
    path_result = 'D:'+os.sep + 'result.txt'

    start = time.clock()

    pics = os.walk(path)
    fp = open(path_result, 'w')

    for i in pics:
        for j in i[2]:
            fp.write(j+' ')
    fp.close()    

    end = time.clock()
    print ('Total time:', end - start)

    主要用来做以记录...

  • 相关阅读:
    Backtracking_37. 解数独
    Backtracking_131. 分割回文串
    DFS_90. 子集 II
    DFS_78. 子集
    DFS_216. 组合总和 III
    非对称加密和ssh免密登陆验证、邮件发送接收、网站CA证书验证
    hibernate一对多哪一方放弃权利?
    关于java转json的一些细节问题
    一个web程序中访问频率较高的url为什么要加时间戳?(特别是异步加载)
    阿里电面经验
  • 原文地址:https://www.cnblogs.com/yuanzhaoyi/p/6026170.html
Copyright © 2011-2022 走看看