Duffblog

          前進一步,看看,需要前進更大一步才可以。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            5 隨筆 :: 53 文章 :: 5 評論 :: 0 Trackbacks
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          網站

          最新評論

          閱讀排行榜

          評論排行榜

          我想要讀取某一個路徑下,文件最后修改的時間大于我給定的所有的文件.
          比如是E:\file
          我想要等到一部分的file,即是文件最后修改的時間大于我給定的
          我目前的做法是:
          查看所有的File,一一比對,得到我想要的File
          //read path
          Vector needReadFile = new Vector();
          Date fileDate = new Date();
          File[] files = new File(readFilePath).listFiles();
          if (files == null) {
          continue;
          }
          for (int x = 0; x < files.length; x++) {
          File tempFile = files[x];
          Date fileDate = new Date(tempFile.
          lastModified());
          if (fileDate.compare(lastModifyDate) == 1 ) {
          needReadFile.add(readFilePath + File.separator +
          tempFile.getName());
          }
          } //end for(int i = 0 ; i< files.length ; i++)

          雖然這樣做是可以達到,當我的File很多的時候,效率很差了

          效率好一點的方法:

          看看listFiles()和listFiles(FileFilter filter) 的源代碼

          public File[] listFiles() {
          String[] ss = list();
          if (ss == null) return null;
          int n = ss.length;
          File[] fs = new File[n];
          for (int i = 0; i < n; i++) {
          fs[i] = new File(this.path, ss[i]);
          }
          return fs;
          }

          public File[] listFiles(FileFilter filter) {
          String ss[] = list();
          if (ss == null) return null;
          ArrayList v = new ArrayList();
          for (int i = 0 ; i < ss.length ; i++) {
          File f = new File(this.path, ss[i]);
          if ((filter == null) || filter.accept(f)) {
          v.add(f);
          }
          }
          return (File[])(v.toArray(new File[0]));
          }

          采用第二個方法以后,只需要遍歷一遍,而且代碼更清晰,
          采用第一個方法,你取得列表以后還需要遍歷一遍過濾掉不符合條件的.

          File[] files = new File(readFilePath).listFiles(new FileFilter(){
          public boolean accept(File pathname){
          //.判斷修改日期,符合條件返回true;否則false;

          }});

          這里采用匿名類,實現一個FileFilter,你要修改過濾的邏輯,只需要修改accept()方法就是了,當然,你也可以專門寫一個類比如

          class FileModifyDateFilter implements FileFilter{
          private Date baseDate = null;
          public FileModifyDateFilter(Date d) {
          baseDate = d;
          }

          public boolean accept(File f) {
          if (baseDate == null)
          return true;
          if (f.lastModified() > baseDate.getTime())
          return true;

          return false;
          }
          }


          原文來自:http://www.jdon.com/jive/thread.jsp?forum=16&thread=22478&message=13169392
          posted on 2006-04-04 21:17 追球者 閱讀(849) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 周至县| 独山县| 洛川县| 宁津县| 仲巴县| 温州市| 金塔县| 和顺县| 堆龙德庆县| 洪江市| 嘉善县| 祥云县| 出国| 河南省| 信丰县| 昭通市| 崇礼县| 吴桥县| 阳原县| 宁波市| 濉溪县| 鄂州市| 湖南省| 滦平县| 麻江县| 潮安县| 鸡东县| 台南市| 龙胜| 湟源县| 民县| 桐城市| 洛南县| 荆门市| 农安县| 延川县| 韩城市| 青海省| 康保县| 中西区| 融水|