按行读取文件
teste de pacote; importar java.io.*; importar java.util.*; classe pública ReadTest {public static list <tring> primeiro_list; Lista estática pública <String> Second_list; public readTest () {primeiro_list = new LinkedList <> (); Second_list = new LinkedList <> (); } public static void readfile () {final string filename = "d: //aa.txt"; String str = null; int i = 0; tente {lineNumberReader Reader = null; leitor = new lineNumberReader (new FileReader (nome do arquivo)); while ((str = leitor.readline ())! = null) {if (! str.isempty ()) {string valores [] = str.split (""); primeiro_list.add (valores [0]); segundo_list.add (valores [1]); }}} catch (ioexception e) {e.printStackTrace (); }} public static void main (string args []) {readtest Reader = new ReadTest (); leitor.readfile (); para (int i = 0; i <primeiro_list.size (); i ++) {System.out.println (primeiro_list.get (i) + ":" + Second_list.get (i)); }}}递归遍历目录
classe listfiles {public static Arraylist filelList = new ArrayList (); public static void listfiles (string dir) {arquivo file = novo arquivo (dir); Arquivo [] arquivos = file.listfiles (); if (null == arquivos) {return; } para (int i = 0; i <files.length; i ++) {if (arquivos [i] .isdirectory ()) {listfiles (arquivos [i] .getabsolutepath ()); } else {System.out.println (arquivos [i]); filelist.add (arquivos [i]); }}}}上面遍历目录是一种递归的方法 , 我们再来看一下非递归的实现:
// 非递归 public static void Scandirnorecursion (String Path) {LinkedList List = new LinkedList (); Arquivo dir = novo arquivo (caminho); Arquivo de arquivo [] = dir.ListFiles (); for (int i = 0; i <file.length; i ++) {if (arquivo [i] .isdirectory ()) list.add (arquivo [i]); else {System.out.println (arquivo [i] .getabsolutepath ()); num ++; }} Arquivo tmp; while (! list.isEmpty ()) {tmp = (file) list.removefirst (); // 首个目录 if (tmp.isdirectory ()) {file = tmp.listfiles (); if (arquivo == null) continuar; for (int i = 0; i <arquivo.length; i ++) {if (arquivo [i] .isdirectory ()) list.add (arquivo [i]); // 目录则加入目录列表 , else {System.out.println (arquivo [i]); num ++; }}} else {System.out.println (tmp); num ++; }}}我们可以写一个类来简单测试一下
importar java.io.file; importar java.util.LinkedList; public Class FileSystem {public static int num; public static void main (string [] args) {long a = system.currenttimemillis (); // string path = "c:"; num = 0; String [] lists = {"c:", "d:"}; /* for (int i = 0; i <lists.length; i ++) {arquivo file = novo arquivo (listas [i]); ScandirCursion (arquivo); */ 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
这里非递归相对要好 ~