国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java文件操作之按行讀取文件和遍歷目錄的方法

2019-11-26 14:30:38
字體:
供稿:網(wǎng)友

按行讀取文件

package test;  import java.io.*; import 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";     String 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]);       }     }   } } 

上面遍歷目錄是一種遞歸的方法,我們再來看一下非遞歸的實(shí)現(xiàn):

//非遞歸  public static void scanDirNoRecursion(String path){   LinkedList list = new LinkedList();    File 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++;      }    }    File tmp;    while (!list.isEmpty()) {      tmp = (File)list.removeFirst();//首個(gè)目錄      if (tmp.isDirectory()) {        file = tmp.listFiles();         if (file == null)          continue;        for (int i = 0; i < file.length; i++) {          if (file[i].isDirectory())            list.add(file[i]);//目錄則加入目錄列表,關(guān)鍵          else{            System.out.println(file[i]);            num++;          }        }      } else {        System.out.println(tmp);        num++;      }    }  }

我們可以寫一個(gè)類來簡單測試一下:

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(file);    */    for(int i=0;i<lists.length;i++){      scanDirNoRecursion(lists[i]);    }        System.out.print("文件總數(shù):"+num);    System.out.print("總耗時(shí):");    System.out.println(System.currentTimeMillis() - a);  }

測試結(jié)果:
遞歸:
文件總數(shù):189497  總耗時(shí):39328
非遞歸:
文件總數(shù):189432 總耗時(shí):37469
這里非遞歸相對(duì)要好~

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 信丰县| 鲁山县| 岳池县| 卢氏县| 隆化县| 邮箱| 沂水县| 延长县| 石景山区| 噶尔县| 朔州市| 绥棱县| 荆州市| 望奎县| 马公市| 全南县| 馆陶县| 永德县| 武夷山市| 夏津县| 马关县| 文水县| 宜兴市| 乡宁县| 丰镇市| 密山市| 临邑县| 洪泽县| 阿城市| 东平县| 宜春市| 齐齐哈尔市| 夏津县| 论坛| 中江县| 萝北县| 万荣县| 新竹县| 凌海市| 凌海市| 米脂县|