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

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

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

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

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

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

    /**
    * 讀取目錄及子目錄下指定文件名的路徑 并放到一個(gè)數(shù)組里面返回遍歷
    * @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("沒有符號(hào)要求的文件");
       }
       else
       {
        String message = "";
        message += "符號(hào)要求的文件數(shù):" + 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)
    {
       //是目錄,同時(shí)需要遍歷子目錄
       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(".");//最后一個(gè).(即后綴名前面的.)的索引
         String tempsuffix = "";
        
         if(begIndex != -1)//防止是文件但卻沒有后綴名結(jié)束的文件
         {
          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
        {
         //打開一個(gè)寫文件器,構(gòu)造函數(shù)中的第二個(gè)參數(shù)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 流風(fēng) 閱讀(25233) 評(píng)論(7)  編輯  收藏

    評(píng)論

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

    還好  回復(fù)  更多評(píng)論   

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

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

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

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

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

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

    要用上 Java7 才引入的 JSR203 NIO2 才會(huì)得到改善  回復(fù)  更多評(píng)論   

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

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

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

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

    //經(jīng)試驗(yàn),后綴不能不填寫,否則編譯不通過,提示“FileViewer.java:17: 非法的表達(dá)式開始”。
    //另外后綴為""時(shí)的情況需要 增加到IF 里去,否則 后綴為""時(shí),不會(huì)顯示所有文件
    List arrayList = FileViewer.getListFiles("d:/com","",true);
    if(arrayList.isEmpty())
    {
    System.out.println("沒有符號(hào)要求的文件");
    }
    else
    {
    String message = "";
    message += "符號(hào)要求的文件數(shù):" + 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 (系統(tǒng)找不到指定的路徑。)
    //如果 加個(gè)文件是否存在的判斷,如不存在就在當(dāng)前目錄新建一個(gè),則更好。
    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)
    {
    //是目錄,同時(shí)需要遍歷子目錄
    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(".");//最后一個(gè).(即后綴名前面的.)的索引
    String tempsuffix = "";

    if(begIndex != -1)//防止是文件但卻沒有后綴名結(jié)束的文件
    {
    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
    {
    //打開一個(gè)寫文件器,構(gòu)造函數(shù)中的第二個(gè)參數(shù)true表示以追加形式寫文件
    FileWriter writer = new FileWriter(fileName, true);
    writer.write(content + "\r\n");
    writer.close();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }

      回復(fù)  更多評(píng)論   

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

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

    java FileViewer

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

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

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

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

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

    多線程怎么做》?  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆檔案

    相冊(cè)

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费一级毛片在级播放| 四虎1515hh永久久免费| 亚洲国产成人影院播放| 国产精品亚洲小说专区| 免费在线观看亚洲| 污视频网站免费观看| 亚洲国产高清精品线久久| 一进一出60分钟免费视频| 亚洲一区无码精品色| 99视频免费在线观看| 亚洲一区二区三区高清| 青青在线久青草免费观看| 中文无码亚洲精品字幕| 四虎永久在线精品免费影视| 成年大片免费视频播放一级| 国产AV无码专区亚洲A∨毛片| 日韩免费高清大片在线| 91亚洲国产成人久久精品网址| 国产免费久久精品99re丫y| 精品亚洲AV无码一区二区三区 | 我想看一级毛片免费的| 精品亚洲国产成人av| 久久精品亚洲福利| 18禁无遮挡无码国产免费网站| 亚洲中文久久精品无码1| 国产成人高清精品免费鸭子 | 在线播放亚洲第一字幕| 色欲色香天天天综合网站免费| 国产99在线|亚洲| 亚洲乱码国产一区网址| 99在线免费观看视频| 亚洲精品无码久久久久牙蜜区| 亚洲国产成人精品激情| 免费一级毛片正在播放| 久久精品国产免费| 中文字幕精品三区无码亚洲| 国产亚洲视频在线播放| 手机在线毛片免费播放| 免费成人在线电影| 亚洲第一se情网站| 亚洲综合久久成人69|