JAVA 读取文件进行排序取出最后变更的的文件

http://blog.csdn.net/thl331860203/article/details/49334217


  1. package com.util;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileOutputStream;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Arrays;  
  7. import java.util.Date;  
  8. import java.util.Iterator;  
  9. import java.util.LinkedHashMap;  
  10. import java.util.Map;  
  11. public class IoUtil {  
  12.       
  13.     /**  
  14.       * 创建文件  
  15.       * @param fileName  
  16.       * @return  
  17.       */    
  18.      public static File createFile(String filePathName)throws Exception{    
  19.         File file  = new File(filePathName);  
  20.        if(!file.exists()){  
  21.            file.createNewFile();    
  22.        }else{  
  23.            file.delete();  
  24.            file.createNewFile();  
  25.        }  
  26.        return file;    
  27.      }  
  28.        
  29.      /** 
  30.       * 写入文件 
  31.       * 自定义编码 
  32.       */  
  33.      public static boolean writeTxtFile(String content,String filePathName,String bytes)throws Exception{    
  34.           boolean flag=false;    
  35.           FileOutputStream o=null;    
  36.           try {    
  37.               String path="";  
  38.               if(filePathName.indexOf("/")>-1){  
  39.                   path=filePathName.substring(0,filePathName.lastIndexOf("/"));  
  40.               }else if(filePathName.indexOf("\\")>-1){  
  41.                   path=filePathName.substring(0,filePathName.lastIndexOf("\\"));  
  42.               }  
  43.               createDir(path);  
  44.               o = new FileOutputStream(createFile(filePathName));  
  45.               o.write(content.getBytes(bytes!=null&&!bytes.equals("")?bytes:"UTF-8"));    
  46.               o.close();    
  47.            flag=true;    
  48.           } catch (Exception e) {    
  49.            // TODO: handle exception    
  50.            e.printStackTrace();    
  51.           }    
  52.           return flag;    
  53.       }    
  54.        
  55.        
  56.      /** 
  57.       * 写入文件 
  58.       * 默认编码UTF-8 
  59.       */  
  60.      public static boolean writeTxtFile(String content,String filePathName)throws Exception{    
  61.           boolean flag=false;    
  62.           FileOutputStream o=null;    
  63.           try {    
  64.               String path="";  
  65.               if(filePathName.indexOf("/")>-1){  
  66.                   path=filePathName.substring(0,filePathName.lastIndexOf("/"));  
  67.               }else if(filePathName.indexOf("\\")>-1){  
  68.                   path=filePathName.substring(0,filePathName.lastIndexOf("\\"));  
  69.               }  
  70.               createDir(path);  
  71.               o = new FileOutputStream(createFile(filePathName));  
  72.               o.write(content.getBytes("UTF-8"));    
  73.               o.close();    
  74.            flag=true;    
  75.           } catch (Exception e) {    
  76.            // TODO: handle exception    
  77.            e.printStackTrace();    
  78.           }    
  79.           return flag;    
  80.       }    
  81.        
  82.        
  83.        
  84.      /** 
  85.       * @param destDirName 
  86.       * @return 
  87.       */  
  88.      public static boolean createDir(String destDirName) {  
  89.             File dir = new File(destDirName);  
  90.             if (dir.exists()) {  
  91.                 return false;  
  92.             }  
  93.             if (!destDirName.endsWith(File.separator)) {  
  94.                 destDirName = destDirName + File.separator;  
  95.             }  
  96.             //创建目录  
  97.             if (dir.mkdirs()) {  
  98.                 return true;  
  99.             } else {  
  100.                 return false;  
  101.             }  
  102.      }  
  103.        
  104.   
  105.        
  106.        
  107.      /** 
  108.       * TEST 
  109.       * @param args 
  110.       */  
  111.      public static void main(String[] args) {  
  112.          //Map<String,Object> map = new   LinkedHashMap<String,Object>();  
  113.          //map=mlistFiles(getPath()+"/test");  
  114.          //System.out.println("===>"+getPath());  
  115.   
  116.     }  
  117.        
  118.     /** 
  119.      * 取得静态文件生成路径 
  120.      *  
  121.      * @return 
  122.      */  
  123.     public static String getPath() {  
  124.         String path = IoUtil.class.getResource("").getPath();  
  125.         path = path.substring(0, path.indexOf("WEB-INF"));  
  126.         return path;  
  127.     }  
  128.        
  129.      /** 
  130.       * 找出变更的文件 
  131.       * @param path 
  132.       * @return 
  133.       */  
  134.      public static Map<String,Object> mlistFiles(String path){  
  135.            
  136.          File file_path=new File(path);  
  137.             //列出该目录下所有文件和文件夹  
  138.             File[] files = file_path.listFiles();  
  139.             //按照文件最后修改日期倒序排序  
  140.             Map<String,Object> map = new LinkedHashMap<String,Object>();  
  141.             //取出第一个(即最新修改的)文件,打印文件名  
  142.             if(files!=null){  
  143.                 for(int i=0;i<files.length;i++){  
  144.                     if(!files[i].isHidden()&&files[i].isFile()&&!files[i].getName().equals("sitemap.xml")){  
  145.                         String value=files[i].getName();  
  146.                         String key=String.valueOf(files[i].lastModified());  
  147.                         key=getMilliseconds(key,i);  
  148.                         //System.out.println("======key=====>"+key);  
  149.                         map.put(key,value);  
  150.                     }  
  151.                   
  152.                 }  
  153.             }  
  154.         return   orderFile(map.size(),map);  
  155.      }  
  156.        
  157.      /** 
  158.       * 解决linux读取毫秒数为000的情况 
  159.       * @param val 
  160.       * @param i 
  161.       * @return 
  162.       */  
  163.      public static String getMilliseconds(String val,int i){  
  164.          //截取后三位是否为000  
  165.          String returnStr="";  
  166.          String lastStr=val.substring(val.length()-3,val.length());  
  167.          if(lastStr.equals("000")){  
  168.              String fisrtStr = val.substring(0,val.length()-3);  
  169.              String lastNum="001";  
  170.              if(i<10){  
  171.                  lastNum="00"+String.valueOf(i);  
  172.              }else if(i<100){  
  173.                  lastNum="0"+String.valueOf(i);  
  174.              }else{  
  175.                  lastNum=i<1000?String.valueOf(i):lastNum;  
  176.              }  
  177.              returnStr=fisrtStr+lastNum;  
  178.          }else{  
  179.              returnStr=val;  
  180.          }  
  181.          return returnStr;  
  182.      }  
  183.        
  184.      /** 
  185.       * 文件排序 
  186.       * @param x 
  187.       * @param map 
  188.       * @return 
  189.       */  
  190.      public static Map<String,Object> orderFile(int x,Map<String,Object> map){  
  191.          Map<String,Object> new_map = new LinkedHashMap<String,Object>();  
  192.             Long[] arr = new Long[x];  
  193.             int i=0;  
  194.             Iterator<String> ite = map.keySet().iterator();   
  195.             while(ite.hasNext()){  
  196.                 String key  = ite.next();    
  197.                 arr[i] = Long.parseLong(key);  
  198.                 i++;  
  199.             }  
  200.             Arrays.sort(arr);  
  201.             for(int k=arr.length-1;k>=0;k--){  
  202.                 //System.out.println("==>"+arr[k]+"-->"+dateTimeToStr(arr[k])+">>>"+map.get(""+arr[k]));  
  203.                 new_map.put(String.valueOf(arr[k]), map.get(""+arr[k]));  
  204.             }  
  205.               
  206.             return new_map;  
  207.      }  
  208.        
  209.      /** 
  210.       * 将长整型数字转换为日期格式的字符串 
  211.       * @param time 
  212.       * @param format 
  213.       * @return 
  214.       */  
  215.      public static String dateTimeToStr(long time) {  
  216.        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  217.        Date date = new Date(time);  
  218.        return sf.format(date);  
  219.      }  
  220.   
  221. }  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值