遍历文件夹中文件
工作中需要遍历文件夹,期初用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+"\r\n");
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+'\n')
fp.close()
end = time.clock()
print ('Total time:', end - start)
主要用来做以记录...