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

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

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

    中文JAVA技術(shù)平等自由協(xié)作創(chuàng)造

    Java專題文章博客和開源

    常用鏈接

    統(tǒng)計(jì)

    最新評論

    Java如何判斷一個文件(夾)被重命名過?

      使用File的lastModify方法是不行的,又不想使用md5碼來校驗(yàn),不使用md5來判斷是因?yàn)閙d5算法運(yùn)算大文件時耗時間。況且內(nèi)容不改變,只改變文件名。
     
       后來使用lastModify+文件的絕對路徑來作為依據(jù)判斷,我做了2個Map來映射,新map和舊map不匹配則會產(chǎn)生新增和刪除這2個結(jié)果。
     
       這樣用來判斷文件還是可以的 但是文件夾就不行了。如果文件夾下面還有文件(夾),也會被誤認(rèn)為重命名。
     
       有什么其他解決辦法嗎?或者代碼應(yīng)該如何修改更加好?
     
       代碼如下:
     
       public class Main {
     
       public Map<STRING,LONG> map = new HashMap<STRING, long="">();
     
       public String baseFilePath;
     
       public static void main(String[] args) throws IOException, InterruptedException {
     
       String baseFilePath = "D:\\md5";
     
       Main m = new Main(baseFilePath);
     
       Map<STRING, long=""> oldMap = m.getFileInfo(baseFilePath);
     
       //很長時間過去了
     
       //-------------------各種操作:文件(夾)或修改或刪除或新增----------------
     
       File oldFile = new File(baseFilePath+"\\ddd.txt");//刪除
     
       oldFile.delete();
     
       File newFile = new File(baseFilePath+"\\new.txt");//新增
     
       newFile.createNewFile();
     
       File olddir = new File(baseFilePath+"\\test");//重命名
     
       File newdir = new File(baseFilePath+"\\test2");
     
       olddir.renameTo(newdir);
     
       //-------------------操作結(jié)束---------------------------------------
     
       Main m2 = new Main(baseFilePath);
     
       Map<STRING, long=""> newMap = m2.getFileInfo(baseFilePath);
     
       Map<STRING, string=""> resultMap = m.getModifyInfo(oldMap, newMap);
     
       List<STRING> resultKeys = new ArrayList<STRING>(resultMap.keySet());
     
       for(String resultKey:resultKeys){
     
       String resultValue = resultMap.get(resultKey);
     
       System.out.println(resultKey+"---"+resultValue);
     
       }
     
       }
     
       public Main(String baseFilePath){
     
       this.baseFilePath = baseFilePath;
     
       }
     
       /**
     
       * 循環(huán)得到目錄下的名字和modify時間
     
       * @param baseFile 根目錄
     
       * @return Map<STRING, long=""> 相對baseFilePath的路徑 以及 最后修改時間
     
       */
     
       public Map<STRING, long=""> getFileInfo(String baseFile){
     
       FileOperate fo = new FileOperate();
     
       File[] files = fo.getFileList(baseFile);
     
       for(File file:files){
     
       map.put(file.getAbsolutePath()。substring(baseFilePath.length()), file.lastModified());//相對baseFilePath的路徑 以及 最后修改時間
     
       if(file.isDirectory()){
     
       getFileInfo(file.getAbsolutePath());//遞歸
     
       }
     
       }
     
       return map;
     
       }
     
       /**
     
       * 比較目錄信息(返回變動的目錄信息)
     
       * @param oldMap
     
       * @param newMap
     
       * @return 存放鍵值對:鍵是目錄 值是類型(如文件內(nèi)容修改,文件(夾)刪除,文件(夾)添加) 注:文件(夾)重命名屬于刪除、添加
     
       */
     
       public Map<STRING, string=""> getModifyInfo(Map<STRING, long=""> oldMap,Map<STRING, long=""> newMap){
     
       Map<STRING, string=""> resultMap = new HashMap<STRING, string="">();
     
       List<STRING> oldKeysList = new ArrayList<STRING>(oldMap.keySet());
     
       List<STRING> newKeysList = new ArrayList<STRING>(newMap.keySet());
     
       for(String oldKey:oldKeysList){
     
       long oldValue = oldMap.get(oldKey);
     
       if(newKeysList.contains(oldKey)){//包含此文件(夾)
     
       long newValue = newMap.get(oldKey);
     
       if(oldValue==newValue){//文件(夾)沒修改
     
       //continue;
     
       }else{//文件被修改
     
       resultMap.put(oldKey, "修改");
     
       }
     
       }else{//不包含 刪除
     
       resultMap.put(oldKey, "刪除");
     
       }
     
       }
     
       for(String newKey:newKeysList){
     
       if(oldKeysList.contains(newKey)){
     
       //continue;
     
       }else{//新增
     
       resultMap.put(newKey, "新增");
     
       }
     
       }
     
       return resultMap;
     
       }
     
       }
     
     </STRING></STRING></STRING></STRING></STRING,></STRING,></STRING,></STRING,></STRING,>
     
       </STRING,></STRING,></STRING></STRING></STRING,></STRING,></STRING,></STRING,>
     
       </STRING,LONG> www.lefeng123.com  托福答案
     

    posted on 2014-02-12 18:12 好不容易 閱讀(209) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    PK10開獎 PK10開獎
    主站蜘蛛池模板: 久久精品国产免费观看三人同眠| 在线永久免费观看黄网站| 亚洲一级视频在线观看| 色播在线永久免费视频| 人人鲁免费播放视频人人香蕉| 亚洲情综合五月天| 99热在线精品免费全部my| 日亚毛片免费乱码不卡一区| 亚洲国产精品无码久久一线| 嫩草影院免费观看| 成人性生交大片免费看好| 亚洲成a人不卡在线观看| 亚洲第一区在线观看| 亚洲人成在线免费观看| v片免费在线观看| 久久精品国产亚洲AV忘忧草18| 爱情岛论坛网亚洲品质自拍| AV大片在线无码永久免费| 国产精品免费久久久久久久久| 亚洲国产精品午夜电影| 久久久久一级精品亚洲国产成人综合AV区| 2019中文字幕在线电影免费| caoporm超免费公开视频| 亚洲AV无码久久久久网站蜜桃| 久久青青草原亚洲av无码| 在线观看免费人成视频| 热99RE久久精品这里都是精品免费 | 免费一级毛片正在播放| 污视频在线免费观看| 免费视频精品一区二区| 伊人久久五月丁香综合中文亚洲 | 美女一级毛片免费观看| 亚洲三级中文字幕| 亚洲精品国产成人99久久| 国产亚洲一区区二区在线 | 亚洲情a成黄在线观看| 久久亚洲国产精品成人AV秋霞| 亚洲成A人片在线观看中文| 一二三四影视在线看片免费| 91成人在线免费视频| 全黄大全大色全免费大片|