java定時讀取文件
阿新 • • 發佈:2018-08-30
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 = newSimpleDateFormat("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定時讀取文件