按行读取文件
包装测试;导入java.io*;导入Java.util。*;公共类ReadTest {public static List <String> first_list;公共静态列表<String> second_list; public readTest(){first_list = new linkedlist <>(); second_list = new linkedlist <>(); } public static void readfile(){最终字符串fileName =“ d://aa.txt”;字符串str = null; int i = 0;尝试{linenumberreader读取器= null;读取器= new Linenumberreader(new FileReader(fileName)); while(((str = reader.readline())!= null){if(!str.isempty()){string values [] = str.split(“”); first_list.add(values [0]); second_list.add(values [1]); }}} catch(ioexception e){e.printstacktrace(); }} public static void main(string args []){readTest reader = new readTest(); Reader.ReadFile(); for(int i = 0; i <first_list.size(); i ++){system.out.println(first_list.get(i) +“:” + second_list.get(i)); }}}}递归遍历目录
class listFiles {public static arraylist filelist = new arraylist(); public static void listfiles(String dir){file file = new file(dir);文件[]文件= file.listfiles(); if(null ==文件){return; } for(int i = 0; i <files.length; i ++){if(files [i] .isdirectory()){listfiles(files [i] .getAbsolutePath()); } else {system.out.println(files [i]); filelist.add(文件[i]); }}}}}上面遍历目录是一种递归的方法,我们再来看一下非递归的实现::
//非递归public static void scandirnorecursion(string path){linkedlist list = new linkedlist();文件dir =新文件(路径);文件文件[] = dir.listfiles(); for(int i = 0; i <file.length; i ++){if(file [i] .isdirectory())list.add(file [i]); else {system.out.println(file [i] .getabsolutepath()); num ++; }}文件TMP; while(!list.isempty()){tmp =(file)list.removefirst(); // fir(tmp.isdirectory()){file = tmp.listfiles();如果(file == null)继续; for(int i = 0; i <file.length; i ++){if(file [i] .isdirectory())list.Add(file [i]); //目录则加入目录列表,system.ut.ut.println(file [i]); num ++; }}} else {system.out.println(tmp); num ++; }}}}我们可以写一个类来简单测试一下:
导入java.io.file; import java.util.linkedlist; public class filesystem {public static int num; public static void main(string [] args){long a = system.currentTimeMillis(); //字符串路径=“ C:”; num = 0; string [] lists = {“ c:”,“ d:”}; /* for(int i = 0; i <lists.length; i ++){file file = new file(lists [i]); scandirrecursion(文件); */ for(int i = 0; i <lists.length; i ++){scandirnorecursion(lists [i]); } system.out.print(“文件总数:”+num); system.out.print(“总耗时:”); system.out.println(system.currentTimeMillis() - a); }测试结果:
递归:
文件总数:189497总耗时:39328
非递归:
文件总数:189432总耗时:37469
这里非递归相对要好〜