<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)
    主站蜘蛛池模板: 久久精品九九亚洲精品| 亚洲中文字幕无码av永久| 未满十八私人高清免费影院| 野花高清在线电影观看免费视频| 亚洲精品美女久久久久9999| jjizz全部免费看片| 四虎国产精品免费视| 色婷婷亚洲一区二区三区| 国产一级片免费看| 亚洲av日韩综合一区在线观看| 国产免费无码一区二区| 亚洲精品自产拍在线观看动漫| 亚洲高清视频免费| 国产精品高清视亚洲精品| 中文字幕免费在线观看动作大片 | 亚洲AV无码XXX麻豆艾秋| 在线观看免费精品国产| 日韩在线视频播放免费视频完整版| 亚洲日韩国产一区二区三区| 精品国产呦系列在线观看免费| 手机在线看永久av片免费| 最新国产成人亚洲精品影院| 四虎影视大全免费入口| 成人嫩草影院免费观看| 亚洲av日韩av不卡在线观看| 亚洲免费在线观看视频| 美国毛片亚洲社区在线观看| 亚洲无线观看国产精品| 无套内谢孕妇毛片免费看看| 好男人www免费高清视频在线| 久久精品亚洲精品国产色婷| 妞干网免费视频在线观看| 一级大黄美女免费播放| 国产精品亚洲专区在线播放| 亚洲VA中文字幕无码一二三区| 免费观看激色视频网站bd| 人妻仑刮八A级毛片免费看| 亚洲一级二级三级不卡| 全亚洲最新黄色特级网站| 亚洲成AV人片在WWW| 国产男女猛烈无遮挡免费视频网站 |