按行读取文件
Pakettest; import Java.io.*; import Java.util.*; public class leadest {public static list <string> first_list; öffentliche statische Liste <string> Second_List; public redetest () {first_list = new LinkedList <> (); Second_List = New LinkedList <> (); } public static void ReadFile () {final String matename = "d: //aa.txt"; String str = null; int i = 0; Versuchen Sie {linenumberReader reader = null; reader = neuer linenumberreader (neuer fileReader (Dateiname)); while ((str = reader.readline ())! First_list.add (Werte [0]); Second_List.add (Werte [1]); }}} catch (ioException e) {e.printstacktrace (); }} public static void main (String args []) {redetest reader = new redetest (); Reader.ReadFile (); für (int i = 0; i <first_list.size (); i ++) {system.out.println (first_list.get (i) + ":" + Second_List.get (i)); }}}递归遍历目录
Klasse Listfiles {public static ArrayList filelist = new ArrayList (); public static void listfiles (string ide) {Datei Datei = neue Datei (DIR); File [] file = file.listfiles (); if (null == Dateien) {return; } für (int i = 0; i <files.length; i ++) {if (Dateien [i] .isDirectory ()) {listFiles (Dateien [i] .getabsolutepath ()); } else {System.out.println (Dateien [i]); filelist.add (Dateien [i]); }}}}上面遍历目录是一种递归的方法 , 我们再来看一下非递归的实现 :
// 非递归 public static void scandirnoreCursion (String -Pfad) {LinkedListlist = new LinkedList (); Datei DIR = New Datei (Pfad); Dateidatei [] = dir.Listfiles (); für (int i = 0; i <file.length; i ++) {if (Datei [i] .isDirectory ()) list.add (Datei [i]); sonst {system.out.println (Datei [i] .getabsolutepath ()); num ++; }} Datei tmp; while (! list.isempty ()) {tmp = (Datei) list.removefirst (); // 首个目录 if (tmp.isdirectory ()) {file = tmp.listfiles (); if (file == null) fortsetzen; für (int i = 0; i <file.length; i ++) {if (Datei [i] .isDirectory ()) list.add (Datei [i]); // 目录则加入目录列表 关键 关键 sonst {system.out.println (Datei [i]); num ++; }}} else {System.out.println (TMP); num ++; }}}我们可以写一个类来简单测试一下 :
import Java.io.file; Import Java.util.LinkedList; öffentlicher Klassen -Dateisystem {public static int num; public static void main (String [] args) {long a = system.currentTimemillis (); // String path = "C:"; Num = 0; String [] lists = {"C:", "D:"}; /* für (int i = 0; i <lists.length; i ++) {file Datei = neue Datei (Listen [i]); scandirrecursion (Datei); */ für (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
这里非递归相对要好 ~