按行读取文件
Пакет -тест; импортировать 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 () {final String fileName = "d: //aa.txt"; String str = null; int i = 0; try {LineNumberReader Reader = null; reader = new LineNumberReader (новый FileReader (имя файла)); while ((str = reader.readline ())! = null) {if (! str.isempty ()) {string values [] = str.split (""); first_list.add (значения [0]); second_list.add (значения [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)); }}}递归遍历目录
класс 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; } for (int i = 0; i <files.length; i ++) {if (files [i] .isdirectory ()) {listfiles (files [i] .getabSolutePath ()); } else {System.out.println (files [i]); filelist.add (files [i]); }}}}上面遍历目录是一种递归的方法 , : :
// 非递归 public static void scandirnorecursion (String Path) {linkedList list = new LinkedList (); Файл dir = new File (path); Файл файла [] = dir.list -files (); для (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 (); // 首个目录 if (tmp.isdirectory ()) {file = tmp.listfiles (); if (file == null) продолжить; 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 ++; }}}我们可以写一个类来简单测试一下 :
Импорт java.io.file; import java.util.linkedlist; public class fileystem {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 (списки [i]); ScandirRecursion (файл); */ for (int i = 0; i <lists.length; i ++) {scandirnorecursion (списки [i]); } System.out.print ("文件总数:"+num); System.out.print ("总耗时:"); System.out.println (System.currentTimeMillis () - a); }测试结果 :
递归 :
文件总数: 189497 总耗时: 39328
非递归 :
文件总数: 189432 总耗时: 37469
这里非递归相对要好 ~