<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如何判斷一個(gè)文件(夾)被重命名過?

      使用File的lastModify方法是不行的,又不想使用md5碼來校驗(yàn),不使用md5來判斷是因?yàn)閙d5算法運(yùn)算大文件時(shí)耗時(shí)間。況且內(nèi)容不改變,只改變文件名。
     
       后來使用lastModify+文件的絕對路徑來作為依據(jù)判斷,我做了2個(gè)Map來映射,新map和舊map不匹配則會產(chǎn)生新增和刪除這2個(gè)結(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);
     
       //很長時(shí)間過去了
     
       //-------------------各種操作:文件(夾)或修改或刪除或新增----------------
     
       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時(shí)間
     
       * @param baseFile 根目錄
     
       * @return Map<STRING, long=""> 相對baseFilePath的路徑 以及 最后修改時(shí)間
     
       */
     
       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的路徑 以及 最后修改時(shí)間
     
       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開獎(jiǎng) PK10開獎(jiǎng)
    主站蜘蛛池模板: 巨胸喷奶水视频www免费视频| 精品亚洲成AV人在线观看| 青青久在线视频免费观看| 37pao成人国产永久免费视频| 久久久久免费精品国产小说| 中国黄色免费网站| 两个人看的www视频免费完整版| jizz免费一区二区三区| 黄色网址免费在线观看| 男女一边摸一边做爽的免费视频| 国产成人无码精品久久久免费| 国产成人自产拍免费视频| 国产又黄又爽又大的免费视频 | 亚洲AV永久纯肉无码精品动漫| 亚洲婷婷五月综合狠狠爱| 亚洲深深色噜噜狠狠爱网站| 好看的电影网站亚洲一区 | 久久这里只有精品国产免费10| 精品久久久久国产免费| 日韩精品免费一区二区三区| 四虎国产精品免费视| 国产亚洲精品a在线观看| 亚洲国产精品无码一线岛国| 亚洲精品自拍视频| 99亚偷拍自图区亚洲| 色偷偷亚洲第一综合| 国产免费福利体检区久久| 久久免费高清视频| 久久www免费人成看片| 卡1卡2卡3卡4卡5免费视频| 亚洲成AⅤ人影院在线观看| 亚洲国产美女精品久久久久∴| 久久综合亚洲色HEZYO社区| 久久夜色精品国产噜噜亚洲a| 日本精品久久久久久久久免费 | 美女黄频a美女大全免费皮| 中文字幕成人免费高清在线视频| 久久久免费精品re6| 成年人免费观看视频网站| 亚洲精品97久久中文字幕无码| 亚洲91av视频|