按行读取文件
test de package; importer java.io. *; import java.util. *; classe publique ReadTest {public static list <string> first_list; Liste statique publique <string> second_list; public readTest () {first_list = new LinkedList <> (); second_list = new LinkedList <> (); } public static void readFile () {final string filename = "d: //aa.txt"; String str = null; int i = 0; essayez {lineNumberReader Reader = null; Reader = new LineNumberReader (nouveau FileReader (nom de fichier)); while ((str = reader.readline ())! = null) {if (! str.isempty ()) {String Values [] = str.split (""); first_list.add (valeurs [0]); second_list.add (valeurs [1]); }}} catch (ioException e) {e.printStackTrace (); }} public static void main (String args []) {readTest Reader = new ReadTest (); lecteur.readfile (); pour (int i = 0; i <premier_list.size (); i ++) {System.out.println (first_list.get (i) + ":" + second_list.get (i)); }}}递归遍历目录
classe ListFiles {public static arrayList FileList = new ArrayList (); public static void listFiles (string dir) {file file = new File (dir); File [] files = file.listFiles (); if (null == files) {return; } pour (int i = 0; i <files.length; i ++) {if (files [i] .isDirectory ()) {listFiles (files [i] .getAbsoluTepath ()); } else {System.out.println (fichiers [i]); fileList.add (fichiers [i]); }}}}上面遍历目录是一种递归的方法 , : :
// 非递归 public static void scandirNoreCursion (String path) {linkedList list = new LinkedList (); Fichier dir = nouveau fichier (chemin); Fichier de fichier [] = dir.listFiles (); for (int i = 0; i <file.length; i ++) {if (file [i] .isDirectory ()) list.add (file [i]); else {System.out.println (fichier [i] .getAbsolutepath ()); num ++; }} Fichier tmp; while (! list.isempty ()) {tmp = (file) list.removeFirst (); // 首个目录 if (tmp.isdirectory ()) {file = tmp.listFiles (); if (file == null) continuer; 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 ++; }}} :
Importer java.io.file; import 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 ++) {file file = new File (lists [i]); scandirrecursion (fichier); * / 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
这里非递归相对要好 ~