1. 程式人生 > >java定時讀取文件

java定時讀取文件

str txt cat end edr form 字節 orm main

在項目中經常會用到定時器,在筆試或者面試中也會經常問到定時器和IO流。

public class TimerDemo {
    public static void main(String[] args) throws Exception {
        
        Calendar date = Calendar.getInstance();
        //設置固定開始時間為 00:00:00
        date.set(date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DATE), 0, 0, 0);
        
long daymin = 5000;//5秒 long daySpan = 24 * 60 * 60 * 1000;//一天的秒數,使用這個秒數就能在某天的固定時刻觸發定時器 //得到定時器實例 Timer time = new Timer(); time.schedule(new TimerTask() { public void run() { //run中填寫定時器主要執行的代碼塊 //打印當前時間 SimpleDateFormat df = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置日期格式 String date1 = df.format(new Date());// new Date()為獲取當前系統時間,也可使用當前時間戳 System.err.println(date1); System.out.println("定時器執行.."); //1,字符流讀取文件 try { FileReader fr
= new FileReader("E:\\demo.txt"); BufferedReader br = new BufferedReader(fr); StringBuilder strb = new StringBuilder(); while (true) { String line = null; try { line = br.readLine(); } catch (IOException e) { e.printStackTrace(); } if (line == null) { break; } strb.append(line); String result = strb.toString(); System.err.println(result); } } catch (FileNotFoundException e) { e.printStackTrace(); } //2,字節流讀取文件 FileInputStream fis = null; try { fis = new FileInputStream("E:\\demo1.txt"); } catch (FileNotFoundException e1) { e1.printStackTrace(); } byte[] b = new byte[1024]; int len = 0; try { while((len=fis.read(b))!=-1){ System.out.println(new String(b, 0, len)); } } catch (IOException e) { e.printStackTrace(); } } }, date.getTime(), daymin); //date.getTime()為上面賦值的00:00:00,daymin是執行間隔   }; }

這裏主要的代碼塊為:

Timer time = new Timer();
time.schedule(new TimerTask() {
  public void run() {
  //run中填寫定時器主要執行的代碼塊
  }, date.getTime(), daymin); //date.getTime(),為開始時間,這裏獲取的是上面賦值的時間;daymin為時間間隔
};

run方法中寫入自己的代碼,我這裏主要是用兩種方法實現對文件的讀取。

技術分享圖片

控制臺打印如上,可以看到每5秒執行一次。

  

java定時讀取文件