按行读取文件
패키지 테스트; 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"; 문자열 str = null; int i = 0; {linenumberReader reader = null; reader = new LinenBumberReader (New Filereader (filename)); while ((str = reader.readline ())! = null) {if (! str.isempty ()) {문자열 값 [] = 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 filleList = new ArrayList (); public static void listfiles (string dir) {file 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 (파일 [i]); filelist.add (파일 [i]); }}}}上面遍历目录是一种递归的方法 上面遍历目录是一种递归的方法, 我们再来看一下非递归的实现 :
// public static void scandirnorecursion (문자열 경로) {linkedlist list = new LinkedList (); 파일 dir = 새 파일 (경로); 파일 파일 [] = dir.listfiles (); for (int i = 0; i <file.length; i ++) {if (file [i] .isdirectory ()) list.add (file [i]); else {system.out.println (파일 [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 ++; }}}我们可以写一个类来简单测试一下 :
import 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; 문자열 [] lists = { "c :", "d :"}; /* for (int i = 0; i <lists.length; i ++) {file file = 새 파일 (lists [i]); scandirrecursion (파일); */ 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
这里非递归相对要好 ~