按行读取文件
パッケージテスト; java.io.*をインポートします。 Java.util。*をインポートします。 public class readtest {public static list <string> first_list; public static 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; try {lineNumberreader reader = null; reader = new linenumberreader(new fileReader(filename)); while((str = reader.readline())!= null){if(!str.isempty()){string values [] = str.split( ""); first_list.add(values [0]); second_list.add(values [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)); }}}递归遍历目录
class 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 public static void scandirnorecursion(string path){linkedlist list = new linkedlist();ファイルdir = new file(path); file file [] = dir.listfiles(); for(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(file == null)継続; for(int i = 0; i <file.length; i ++){if(file [i] .isdirectory())list.add(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; string [] lists = {"c:"、 "d:"}; /* for(int i = 0; i <lists.length; i ++){file file = new 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
这里非递归相对要好〜