按行读取文件
prueba de paquete; import java.io.*; import java.util.*; clase pública ReadTest {Lista estática pública <String> First_List; Lista estática pública <String> Second_List; Public ReadTest () {First_List = new LinkedList <> (); segundo_list = new LinkedList <> (); } public static void readFile () {Final String filename = "d: //aa.txt"; Cadena str = nulo; int i = 0; Pruebe {LinenEngergeReader lector = null; lector = new LinenumberReader (new FileReader (nombre de archivo)); while ((str = reader.readline ())! = null) {if (! str.isempty ()) {string valores [] = str.split (""); first_list.add (valores [0]); segundo_list.add (valores [1]); }}} Catch (ioException e) {E.PrintStackTrace (); }} public static void main (string args []) {readTest lector = new ReadTest (); lector.readFile (); for (int i = 0; i <primer_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) {archivo archivo = nuevo archivo (dir); File [] files = file.listFiles (); if (archivos null ==) {return; } for (int i = 0; i <files.length; i ++) {if (files [i] .isDirectory ()) {listFiles (archivos [i] .getabsolutePath ()); } else {System.out.println (archivos [i]); filelist.add (archivos [i]); }}}}上面遍历目录是一种递归的方法 我们再来看一下非递归的实现.
// 非递归 public static void scandirnorecursion (string ruta) {LinkedList list = new LinkedList (); Archivo dir = nuevo archivo (ruta); Archivo archivo [] = dir.listFiles (); for (int i = 0; i <file.length; i ++) {if (file [i] .isDirectory ()) list.add (file [i]); else {system.out.println (archivo [i] .getabsolutePath ()); num ++; }} Archivo tmp; while (! List.isEmpty ()) {tmp = (file) list.removeFirst (); // 首个目录 if (tmp.isDirectory ()) {file = tmp.listFiles (); if (file == null) continuar; for (int i = 0; i <file.length; i ++) {if (file [i] .isDirectory ()) list.add (file [i]); // 目录则加入目录列表 , 关键 关键 else {System.out.println (file [i]); num ++; }}} else {system.out.println (tmp); num ++; }}}我们可以写一个类来简单测试一下 :
import java.io.file; import java.util.linkedList; publicidad de clases pública {public static int num; public static void main (string [] args) {long a = system.currenttimemillis (); // string ruta = "c:"; num = 0; String [] lists = {"c:", "d:"}; /* for (int i = 0; i <lists.length; i ++) {archivo archivo = nuevo archivo (listas [i]); Scandirrecursion (archivo); */ for (int i = 0; i <lists.length; i ++) {Scandirnorecursion (listas [i]); } System.out.print ("文件总数:"+num); System.out.print ("总耗时:"); System.out.println (System.CurrentTimemillis () - A); }测试结果 :
递归 :
文件总数: 189497 总耗时: 39328
非递归 :
文件总数: 189432 总耗时: 37469
这里非递归相对要好 ~