<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開獎
    主站蜘蛛池模板: 亚洲男人的天堂www| 亚洲视频免费播放| 日本免费高清视频| 亚洲人成人77777网站不卡| 又爽又高潮的BB视频免费看| 九九热久久免费视频| 亚洲国产精品人久久电影| 免费人妻av无码专区| 真实国产乱子伦精品免费| 国产精品亚洲lv粉色| 亚洲人成网址在线观看| 免费国产在线观看老王影院| 最近中文字幕无免费| 美女被爆羞羞网站免费| 亚洲精品中文字幕麻豆| 国产精品亚洲精品日韩已方| 三年片在线观看免费大全 | 亚洲国产精品一区二区第一页| 美女视频黄免费亚洲| 两个人看的www免费高清| 亚洲第一男人天堂| 久久夜色精品国产亚洲AV动态图 | 日韩免费在线视频| 国产在亚洲线视频观看| 亚洲国产亚洲片在线观看播放| 久久久久久A亚洲欧洲AV冫| 色妞WWW精品免费视频| 久久国产精品免费观看| 一区二区三区免费视频播放器| 99999久久久久久亚洲| 亚洲AV人无码综合在线观看 | 亚洲精品乱码久久久久蜜桃| 久久亚洲精品人成综合网| 区三区激情福利综合中文字幕在线一区亚洲视频1| 最近最好最新2019中文字幕免费| a免费毛片在线播放| 激情婷婷成人亚洲综合| 亚洲欧美日韩国产精品一区| 亚洲欧洲日产韩国在线| 亚洲久本草在线中文字幕| 亚洲三区在线观看无套内射|