<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里

    分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里。
    由于公司要求讀取項目下所有jsp文件,并讀取開頭的自定義的注釋來生成類似javadoc的東西進行頁面管理。
    而讀取jsp源代碼需要知道文件的絕對路徑,所有通過項目文件夾路徑先取出所有jsp文件目錄再循環解析。
    最后通過搜索和自己的努力寫成一個完整的測試類,供以后查閱,同時分享一下。
    ps:通過這個測試類,復習了下數組List Iterator io 泛型和遞歸函數,雖然很簡單但綜合起來用還是遇到了些小問題化了一個多小時調試,例如有些異常文件沒有后綴名的用.去判斷返回的索引就是-1了,如果沒有判斷后面的操作就出現異常了,因此我在關鍵地方加了注釋,希望對大家有幫助。

    import java.io.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    /**
    * 讀取目錄及子目錄下指定文件名的路徑 并放到一個數組里面返回遍歷
    * @author zdz8207
    *
    */
    public class FileViewer {
    public static void main(String[] args) {
       List arrayList = FileViewer.getListFiles("d:/ajax","html",true);
      
       if(arrayList.isEmpty())
       {
        System.out.println("沒有符號要求的文件");
       }
       else
       {
        String message = "";
        message += "符號要求的文件數:" + arrayList.size() + "\r\n";
        System.out.println(message);
       
        for (Iterator i = arrayList.iterator(); i.hasNext();)
        {
         String temp = (String) i.next();
         System.out.println(temp);
         message += temp + "\r\n";
        }
       
        appendMethod("d:/ajax/menu.txt",message);
       }
    }
    public static List<String> fileList = new ArrayList<String>();

    /**
    *
    * @param path 文件路徑
    * @param suffix 后綴名
    * @param isdepth 是否遍歷子目錄
    * @return
    */
    public static List getListFiles(String path, String suffix, boolean isdepth)
    {
       File file = new File(path);
       return FileViewer.listFile(file ,suffix, isdepth);
    }

    public static List listFile(File f, String suffix, boolean isdepth)
    {
       //是目錄,同時需要遍歷子目錄
       if (f.isDirectory() && isdepth == true)
       {
        File[] t = f.listFiles();
        for (int i = 0; i < t.length; i++)
        {
         listFile(t[i], suffix, isdepth);
        }
       }
       else
       {
        String filePath = f.getAbsolutePath();
       
        if(suffix !=null)
        {
         int begIndex = filePath.lastIndexOf(".");//最后一個.(即后綴名前面的.)的索引
         String tempsuffix = "";
        
         if(begIndex != -1)//防止是文件但卻沒有后綴名結束的文件
         {
          tempsuffix = filePath.substring(begIndex + 1, filePath.length());
         }
        
         if(tempsuffix.equals(suffix))
         {
          fileList.add(filePath);
         }
        }
        else
        {
         //后綴名為null則為所有文件
         fileList.add(filePath);
        }
       
       }
      
       return fileList;
    }

    /**
        * 方法追加文件:使用FileWriter
        * @param fileName
        * @param content
        */
    public static void appendMethod(String fileName, String content)
    {
        try
        {
         //打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件
         FileWriter writer = new FileWriter(fileName, true);
         writer.write(content + "\r\n");
         writer.close();
        }
        catch (IOException e)
        {
         e.printStackTrace();
        }
    }
    }

    posted on 2008-09-20 16:59 流風 閱讀(25233) 評論(7)  編輯  收藏

    評論

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里 2008-09-20 19:33 kouprey

    還好  回復  更多評論   

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里 2008-09-20 21:39 流風

    寫下來主要是復習下知識,和整理下思路,同時也方便以后的重用。
    當然如果要細化還是有很多工作可以作的,例如用重載寫三個同名函數分別只傳入一個,兩個,三個參數的,這樣使用起來就更加方便了,另外按照慣例優先配置的方法可以采用如果傳入某個參數是默認生成什么格式的文件,返回什么格式的值關之類的。  回復  更多評論   

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里[未登錄] 2008-09-20 23:13 Dennis

    以上的 code 有引起 forever recursion 和占用大量多的記憶體的危險

    這是一般的 bug pattern
    也是 Java 檔案操作不好用的原因

    Java 沒有能力處理進階 file system 的 symbolic link / hard link / junction point
    Java 也不善長作一般的檔案操作

    要用上 Java7 才引入的 JSR203 NIO2 才會得到改善  回復  更多評論   

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里 2010-02-22 21:21 彭玲西

    import java.io.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    /**
    * 讀取目錄及子目錄下指定文件名的路徑 并放到一個數組里面返回遍歷
    * @author zdz8207
    *
    */
    public class FileViewer {
    public static void main(String[] args) {
    //List arrayList = FileViewer.getListFiles("d:/com","html",true);

    //讀取d:/com下的以java 結尾的文件 如有子目錄,包含之(后綴名為null則為所有文件)
    //List arrayList = FileViewer.getListFiles("d:/com","java",true);

    //經試驗,后綴不能不填寫,否則編譯不通過,提示“FileViewer.java:17: 非法的表達式開始”。
    //另外后綴為""時的情況需要 增加到IF 里去,否則 后綴為""時,不會顯示所有文件
    List arrayList = FileViewer.getListFiles("d:/com","",true);
    if(arrayList.isEmpty())
    {
    System.out.println("沒有符號要求的文件");
    }
    else
    {
    String message = "";
    message += "符號要求的文件數:" + arrayList.size() + "\r\n";
    System.out.println(message);

    for (Iterator i = arrayList.iterator(); i.hasNext();)
    {
    String temp = (String) i.next();
    System.out.println(temp);
    message += temp + "\r\n";
    }
    //將顯示的文件路徑寫到指定的文件里,若文件不存在,則提示IO異常
    //java.io.FileNotFoundException: d:\ajax\menu.txt (系統找不到指定的路徑。)
    //如果 加個文件是否存在的判斷,如不存在就在當前目錄新建一個,則更好。
    appendMethod("d:/menu.txt",message);
    }
    }
    public static List<String> fileList = new ArrayList<String>();

    /**
    *
    * @param path 文件路徑
    * @param suffix 后綴名
    * @param isdepth 是否遍歷子目錄
    * @return
    */
    public static List getListFiles(String path, String suffix, boolean isdepth)
    {
    File file = new File(path);
    return FileViewer.listFile(file ,suffix, isdepth);
    }

    public static List listFile(File f, String suffix, boolean isdepth)
    {
    //是目錄,同時需要遍歷子目錄
    if (f.isDirectory() && isdepth == true)
    {
    File[] t = f.listFiles();
    for (int i = 0; i < t.length; i++)
    {
    listFile(t[i], suffix, isdepth);
    }
    }
    else
    {
    String filePath = f.getAbsolutePath();

    System.out.println("suffix = "+suffix);
    if(suffix =="" || suffix == null)
    {
    //后綴名為null則為所有文件
    System.out.println("----------------");
    fileList.add(filePath);
    }
    else
    {
    int begIndex = filePath.lastIndexOf(".");//最后一個.(即后綴名前面的.)的索引
    String tempsuffix = "";

    if(begIndex != -1)//防止是文件但卻沒有后綴名結束的文件
    {
    tempsuffix = filePath.substring(begIndex + 1, filePath.length());
    }

    if(tempsuffix.equals(suffix))
    {
    fileList.add(filePath);
    }
    System.out.println("|||||||||||||||||||");
    }

    }

    return fileList;
    }

    /**
    * 方法追加文件:使用FileWriter
    * @param fileName
    * @param content
    */
    public static void appendMethod(String fileName, String content)
    {
    try
    {
    //打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件
    FileWriter writer = new FileWriter(fileName, true);
    writer.write(content + "\r\n");
    writer.close();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }

      回復  更多評論   

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里 2010-02-22 21:24 彭玲西

    另外在同一個目錄新建個BAT文件run.bat,內容為:
    @ echo off

    java FileViewer

    則雙擊就可,在d:\menu.txt中看到結果了。

    http://tieba.baidu.com/f?kw=%C5%ED%C1%E1%CE%F7  回復  更多評論   

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里[未登錄] 2012-04-12 15:55 晶晶

    獲取到所有的Jsp文件之后,怎么解析Jsp文件里面的內容,并提取所有的鏈接資源,最后判斷這些資源是否存在?  回復  更多評論   

    # re: 分享下java 讀取目錄及子目錄下指定文件名的路徑 并放到一個List數組里面返回遍歷和寫到文件里 2015-06-09 20:02 Leeee

    多線程怎么做》?  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2015年6月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 午夜免费福利在线| 自拍偷自拍亚洲精品播放| 四虎永久在线精品免费观看地址| 久久国产免费一区| 精品国产免费一区二区三区| 国产亚洲综合精品一区二区三区| 亚洲乱码一二三四区麻豆| 亚洲国产精品特色大片观看完整版| 免费国产在线观看老王影院| 免费鲁丝片一级观看| 一个人免费观看www视频在线| 香蕉免费一区二区三区| 久久av免费天堂小草播放| 美女视频免费看一区二区| 亚洲中文字幕久久精品无码A| 亚洲成在人线电影天堂色| 亚洲一区二区中文| 亚洲日本中文字幕| 亚洲成亚洲乱码一二三四区软件| 亚洲一区二区女搞男| 亚洲女人被黑人巨大进入| 全黄性性激高免费视频| 国产无遮挡又黄又爽免费视频 | 亚洲自偷自偷图片| 亚洲精品尤物yw在线影院| 亚洲А∨精品天堂在线| 国产免费av片在线无码免费看| 夜夜爽免费888视频| 成人奭片免费观看| 女人让男人免费桶爽30分钟| 成人免费无毒在线观看网站| 在线免费观看中文字幕| 在线免费观看色片| 免费国产高清视频| 亚洲AV无码乱码在线观看牲色 | 亚洲一日韩欧美中文字幕在线| 久久精品国产亚洲AV蜜臀色欲| 亚洲中文久久精品无码1| 33333在线亚洲| 亚洲国产无线乱码在线观看| 国产精品亚洲AV三区|