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)

    主要用来做以记录...

  • 相关阅读:
    Windows 10安装Docker并使用私钥连接AWS EC2
    Logback中%X的使用
    使用CompletableFuture+ExecutorService+Logback的多线程测试
    Spring Boot与Spring Session集成
    Java 8中Collection转为Map的方法
    记一次OutOfMemory定位过程-续
    记一次OutOfMemory定位过程
    Jmeter学习之While Controller
    使用VirtualBox虚拟机搭建局域网(续)
    Java 8的Lambda学习
  • 原文地址:https://www.cnblogs.com/yuanzhaoyi/p/6026170.html
Copyright © 2011-2022 走看看