Java读取txt文件工具类--Java免费学习网

package com.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;

/**
 * 读取txt文件
 * @author ccj
 *
 */
public class RefreshReadTextFile {
 //private static List fileInfo = null; 
 private static Map> cacheMap = new HashMap>();//文件信息读取
 private static Map lastModifyTimeMap = new HashMap();
 private static long timeOut = 10*60*1000; //每10分钟更新一次
 /**
  * 读取文件内信息
  * @param file
  * @return  
http://www.javalearns.com/
  * @throws IOException 
  */
 public static List read(String file) throws IOException{
  //每隔10分钟进行一次文件信息更新读取
  List fileInfo = cacheMap.get(file);
  Long lastModifyTime =  StringUtils.getNotNullLong1(lastModifyTimeMap.get(file));
  
  BigInteger b1 = new BigInteger(System.currentTimeMillis()+"");
  BigInteger b2 = new BigInteger(StringUtils.getNotNullLong(lastModifyTime)+"");
  BigInteger b3 = b1.subtract(b2);
  //System.out.println("b3="+b3+",timeout="+timeOut);   
http://www.javalearns.com/

  if(fileInfo==null || lastModifyTime==null || lastModifyTime==0 || b3.longValue()>timeOut){
   fileInfo = new Vector();
   File f = new File(file);
   //如果文件不能正常读取,返回空的List
   if(!f.exists() || !f.isFile() || !f.canRead()){
    return fileInfo;
   }
   BufferedReader br = new BufferedReader(new FileReader(f));
   String s = null;
   while((s=br.readLine())!=null){
    if(!s.trim().equals("")){
     fileInfo.add(s.trim());
    }
   }
   cacheMap.put(file, fileInfo);
   lastModifyTimeMap.put(file, System.currentTimeMillis());
  }
  
  return fileInfo;
 }
 
 public static void main(String[] args) throws IOException{
  List list = RefreshReadTextFile.read("E:\\work\\jtb\\workspace\\jtb_archive\\web\\WEB-INF\\config\\userList.txt");
  for(String s : list){
   System.out.println(s);
  }
 }

}

文章转载自  http://www.javalearns.com/Html/?1546.html

你可能感兴趣的:(Java编程)