<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

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


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


    網站導航:
     
    <2012年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 人人鲁免费播放视频人人香蕉| 亚洲国产一区在线观看| 中文字幕亚洲情99在线| 曰批全过程免费视频播放网站 | 亚洲av无码乱码国产精品fc2| 人人鲁免费播放视频人人香蕉| 亚洲AV区无码字幕中文色| 男人进去女人爽免费视频国产| 亚洲AV日韩AV永久无码绿巨人 | 57PAO成人国产永久免费视频| 亚洲美女色在线欧洲美女| 在线免费观看国产| 亚洲国产成AV人天堂无码| 亚洲av无码成人精品区在线播放| sss日本免费完整版在线观看| 亚洲国产精品成人久久蜜臀 | 亚洲精品国产av成拍色拍| 在线免费观看国产视频| 日韩在线一区二区三区免费视频| 久久精品国产亚洲AV电影| 岛国av无码免费无禁网站| 亚洲av永久无码精品网址| 亚洲国产成人久久综合一区77| 3344永久在线观看视频免费首页 | 99久久亚洲精品无码毛片| 免费国产一级特黄久久| 最近国语视频在线观看免费播放| 亚洲AV无码不卡在线播放| 免费欧洲毛片A级视频无风险| 中文字幕无码免费久久9一区9 | 亚洲精品无码久久毛片| 成人网站免费看黄A站视频| 亚洲人成网站在线观看播放青青| 亚洲女人被黑人巨大进入| 青青青青青青久久久免费观看| 高清免费久久午夜精品| 亚洲精品欧美综合四区| 亚洲一区二区三区91| 亚洲一级特黄大片在线观看| 67pao强力打造高清免费| 成人电影在线免费观看|