java定时读取文件

在项目中经常会用到定时器,在笔试或者面试中也会经常问到定时器和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秒执行一次。

  

原文地址:https://www.cnblogs.com/xiangpeng/p/9559476.html

时间: 2024-11-09 03:20:05

java定时读取文件的相关文章

Java逐行读取文件有多少种方法?

如果每个线程使用的变量都是其它线程不会读取或修改的,那么就不存在一致性问题.同样,如果变量是只读的,多个线程同时读取该变量也不会有一致性问题.否则,将会出现不一致性问题.为了解决数据不一致问题,必须引入某些机制使线程间同步. 当变量修改时间多于一个存储器访问周期,同时读.写操作又相互交替时,潜在的不一致性就会出现.如下图所示: 此时,线程B读取到的数据是错误的.使用一把锁能够解决上述问题: 下面介绍线程的三种同步机制: 1.互斥量pthread_mutex_t 互斥量就是锁,对某段临界区进行加锁

Java代码读取文件

用Java代码读取文件时,保持文件本来的格式(主要是保持换行),这点有时候比较重要.用代码实现也相当简单. private static void readFile() { StringBuilder sb = new StringBuilder(); String data; try { BufferedReader br = new BufferedReader(new FileReader(".\\TestFile\\Test")); // 判断之后一行是否为空.如果为空,则结束

Java中读取文件

Java中读取文件,去除一些分隔符,保存在多维数组里面 1 public void readFile(String filePath) 2 { 3 File file=new File(filePath); 4 ArrayList<String[]> dataArray=new ArrayList<String[]>(); 5 try{ 6 String str=new String(); 7 BufferedReader in=new BufferedReader(new Fil

java io 读取文件乱码及读取不出来的问题

import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class TestFileWriter { public static void main(String [] args) { try { FileReader out = new FileReader("d:/a.txt"); BufferedR

JAVA本地读取文件,解决中文乱码问题

JAVA本地读取文件出现中文乱码,查阅一个大神的博客做一下记录 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;imp

使用Java FileInputStream读取文件内容到字节数组中

package date0802; import java.io.FileInputStream; import java.io.IOException; public class InputStream { @SuppressWarnings("resource") public static void main(String[] args) throws IOException { FileInputStream fileInputStream = new FileInputStr

Java中读取文件按照规则分割然后输出

import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.List; /** * @author 码农小江 * H

java实现读取文件内容(不同类型)

在一些项目中大量的数据经常需要从文件中读取,例如xml文件,txt文件,csv文件 1.读取本地的xml文件,需要注意对应的路径 //读取xml文件,xmlFile为读取文件的路径 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.pars

java中读取文件以及向文件中追加数据的总结

1 package gys; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException; 9 import java.io.InputStream; 10 import java.io.InputSt