按行讀取文件
包裝測試;導入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
這裡非遞歸相對要好〜