最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年03月10日 08:56:57   作者:mafuli007  
這篇文章主要介紹了Java文件操作之按行讀取文件和遞歸遍歷目錄的方法,遍歷目錄文中分別舉了遞歸和非遞歸的例子,需要的朋友可以參考下

按行讀取文件

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]); 
      } 
    } 
  } 
} 

上面遍歷目錄是一種遞歸的方法,我們再來看一下非遞歸的實現(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();//首個目錄
      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++;
      }
    }
  }

我們可以寫一個類來簡單測試一下:

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("總耗時:");
    System.out.println(System.currentTimeMillis() - a);
  }

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

相關(guān)文章

  • IDEA中啟動多個SpringBoot服務(wù)的實現(xiàn)示例

    IDEA中啟動多個SpringBoot服務(wù)的實現(xiàn)示例

    本文主要介紹了IDEA中啟動多個SpringBoot服務(wù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java設(shè)計模式之外觀模式示例詳解

    Java設(shè)計模式之外觀模式示例詳解

    外觀模式為多個復(fù)雜的子系統(tǒng),提供了一個一致的界面,使得調(diào)用端只和這個接口發(fā)生調(diào)用,而無須關(guān)系這個子系統(tǒng)內(nèi)部的細(xì)節(jié)。本文將通過示例詳細(xì)為大家講解一下外觀模式,需要的可以參考一下
    2022-08-08
  • SpringBoot+RabbitMQ方式收發(fā)消息的實現(xiàn)示例

    SpringBoot+RabbitMQ方式收發(fā)消息的實現(xiàn)示例

    這篇文章主要介紹了SpringBoot+RabbitMQ方式收發(fā)消息的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java構(gòu)建對象常用3種方法解析

    Java構(gòu)建對象常用3種方法解析

    這篇文章主要介紹了Java構(gòu)建對象常用3種方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • java實現(xiàn)打印日歷

    java實現(xiàn)打印日歷

    這篇文章主要為大家詳細(xì)介紹了java打印日歷的實現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • java二路歸并排序示例分享

    java二路歸并排序示例分享

    這篇文章主要介紹了java二路歸并排序示例,需要的朋友可以參考下
    2014-02-02
  • Maven項目web多圖片上傳及格式驗證的實現(xiàn)

    Maven項目web多圖片上傳及格式驗證的實現(xiàn)

    本文主要介紹了Maven項目web多圖片上傳及格式驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 關(guān)于servlet向mysql添加數(shù)據(jù)時中文亂碼問題的解決

    關(guān)于servlet向mysql添加數(shù)據(jù)時中文亂碼問題的解決

    最近在工作中遇到一個小問題,出現(xiàn)了中文亂碼的問題,無奈只能想辦法解決,下面這篇文章主要給大家介紹了關(guān)于servlet向mysql添加數(shù)據(jù)時中文亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Hibernate批量處理海量數(shù)據(jù)的方法

    Hibernate批量處理海量數(shù)據(jù)的方法

    這篇文章主要介紹了Hibernate批量處理海量數(shù)據(jù)的方法,較為詳細(xì)的分析了Hibernate批量處理海量數(shù)據(jù)的原理與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03
  • Mybatis 實現(xiàn)打印sql語句的代碼

    Mybatis 實現(xiàn)打印sql語句的代碼

    這篇文章主要介紹了Mybatis 實現(xiàn)打印sql語句的代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論

余干县| 博乐市| 淮滨县| 汝城县| 阿城市| 昌吉市| 平谷区| 宜兰市| 米脂县| 曲麻莱县| 阜康市| 民勤县| 青铜峡市| 石河子市| 郴州市| 鄂托克前旗| 金塔县| 惠东县| 长岛县| 喀喇| 合山市| 孟州市| 乌鲁木齐市| 遂宁市| 康平县| 璧山县| 鹿邑县| 深水埗区| 宁海县| 通渭县| 滦南县| 石城县| 沙雅县| 军事| 阿荣旗| 井冈山市| 岳池县| 大姚县| 内丘县| 广平县| 伊吾县|