「java定时扫描」java调用扫描仪

博主:adminadmin 2022-12-04 19:15:07 85

今天给各位分享java定时扫描的知识,其中也会对java调用扫描仪进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 定时的问题,我现在想实现的是每个月的第四个工作日零点点去扫描数据库,修改一个字段的状态

可以考虑使用监听器模式,实时的查看系统时间,写个函数判断是否是第四个工作日的零点,是的话,执行数据库更新操作。

请问 java 怎么定时扫描 获得最新的 新建的文件的名字,请给点思路。谢谢 分少,不好意思。。。。。

java本身是不能获取文件创建时间的,只能用lastModified方法获取最后修改时间。如果一定要新建文件的名字的话,恐怕只能使用JNI技术调用其他语言了,比如调用C++写的dll

如何用java实现定时扫描文件夹

写一个类继承Thread,重写run方法,在run方法里面写你要做的处理,然后根据你的定时要求来设置sleep的时间。

new Thread(){

  run() {

      // 根据具体需求设置时间:毫秒

       sleep(100ms);

    while (true) {

      // 扫描文件夹处理

       ....

      // 根据具体需求设置时间:毫秒

       sleep(24 * 3600 * 1000);

    }

  }

}

java中不是有定时器吗?写好自己的任务,定时执行就可以了

Timer timer = new Timer();

Task task = new Task(){

   public void run(){

      System.out.println("running...");

   }

};

timer.shedule(task,delayDate,internalTime);

这种跟操作系统关系紧密的操作没必要用java来做,除非你是J2EE,那么Spring里有quataz类似Unix里面cronjob的开源框架可以用,很方便

Unix、linux操作系统配到cronjob里即可,Windows操作系统的“开始”-》“附件”-》系统工具-》计划任务

用JAVA写一个程序每隔一秒扫描c:\Mailboxes\in下所有EML形式文件

public static void main(String[] args) {

// TODO Auto-generated method stub

int j = 0;

while(j5) {

File f = new File("c:/Mailboxes/in/");

File[] fArray = f.listFiles();

for(int i=0; ifArray.length; i++) {

if(fArray[i].getName().matches("[\\w]*.EML$")) {

System.out.println(fArray[i].getName());

try {

FileInputStream is = new FileInputStream(fArray[i]);

byte[] b = new byte[(int)fArray[i].length()];

is.read(b);

FileOutputStream os = new FileOutputStream("c:/mail/" + fArray[i].getName());

os.write(b);

os.close();

is.close();

fArray[i].delete();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

j++;

}

}

java 定时的问题,我现在想实现的是每个月的第四个工作日中午十二点去扫描数据库,修改一个字段的状态

修改数据库可以使用数据库本身的计划任务(job),这种方式最好。

第二种是使用程序来做如java的timer和timetask。保证在项目启动的时候启动该计划任务。

    public static void main(String[] args) {

        //定时任务

        final Timer timer = new Timer();

        // 指定任务在星期四中午12:00执行

        Calendar calendar = Calendar.getInstance();

        calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); 

        calendar.set(Calendar.HOUR_OF_DAY, 12);  

        calendar.set(Calendar.MINUTE, 00);  

        calendar.set(Calendar.SECOND, 0);  

        java.util.Date time = calendar.getTime();

        timer.schedule(new TimerTask() {

            public void run() {

                // 你要执行的操作

                try{

                    

                } catch (Exception e) {

                    // 出现异常的操作:如取消计划任务

                    timer.cancel();

                } 

            }

        },time);

    }

java写一个监控器,每月1号一点扫描一次,注意每月只扫描一次,考虑效率问题和资源问题!!!求大侠啊!!

不想写代码了,给你一个我写过的参考吧,我的这个是每天晚上0点时执行程序,一天只执行一次,效率认为还不错。

package prepare;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class Auto_Prepare extends Thread {

// SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");// 格式化日期

// SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");// 格式化时间

SimpleDateFormat sdfTime_ALL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化时间

public Auto_Prepare() {

}

public void run() {

// TODO Auto-generated method stub

int way = 1;// 选择的方法

System.out.println("选择的方法是:方法" + way);

if (way == 1) {// 用Thread.Sleep()方法实现

while (true) {

int ON_RestTime = 20;// 如果进行了准备工作,线程的睡眠时间,单位:小时

int OFF_RestTime = 59;// 如果不进行准备工作,线程的睡眠时间,单位:分钟

// /////////////////////////////////////////////////////////////格式化时间

Calendar Now = Calendar.getInstance();

String strTime = "现在时刻北京时间:"

+ sdfTime_ALL.format(Now.getTime()) + "----";

if (Now.get(Calendar.HOUR_OF_DAY) == 0) {

// 即当时间是0点时,开始执行下列语句

System.out.println("abcdefghijklmnopqrstuvwxyz");

System.out.println("Auto_Prepare.java====" + strTime

+ "开始准备所有数据...");

Date SHDate = Now.getTime();// 执行准备工作前的时间

PrepareData(Now);// 执行准备工作

Now = Calendar.getInstance();// 现在的时间

long RunTime = Now.getTime().getTime() - SHDate.getTime();// 准备数据消耗的时间

int hr = (int) RunTime / 1000 / 60 / 60;

int mr = (int) RunTime / 1000 / 60 - hr * 60;

int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;

System.out.println("Auto_Prepare.java====现在时刻北京时间:"

+ sdfTime_ALL.format(Now.getTime())

+ "----准备工作运行时间为:" + hr + "小时" + mr + "分" + sr

+ "秒。");

Now = Calendar.getInstance();// 现在的时间

long SleepTime = ON_RestTime * 60 * 60 * 1000

+ (24 - ON_RestTime) * (60 - OFF_RestTime) * 60

* 1000 - RunTime;

// 加(24-ON_RestTime)*(60-OFF_RestTime)分钟的目的

// 是消除一天中有四次睡眠OFF_RestTime分钟造成的误差。

int hs = (int) SleepTime / 1000 / 60 / 60;

int ms = (int) SleepTime / 1000 / 60 - hs * 60;

int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;

System.out.println("Auto_Prepare.java====现在时刻北京时间:"

+ sdfTime_ALL.format(Now.getTime())

+ "----所有数据准备完毕,线程睡眠:" + hs + "小时" + ms + "分" + ss

+ "秒。");

try {

Auto_Prepare.sleep(SleepTime);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} else {// 不是0点,睡眠OFF_RestTime分钟

Date SHDate = Now.getTime();

Now = Calendar.getInstance();

long RunTime = Now.getTime().getTime() - SHDate.getTime();// 程序运行消耗的时间

int hr = (int) RunTime / 1000 / 60 / 60;

int mr = (int) RunTime / 1000 / 60 - hr * 60;

int sr = (int) RunTime / 1000 - hr * 60 * 60 - mr * 60;

System.out

.println("Auto_Prepare.java====现在时刻北京时间:"

+ sdfTime_ALL.format(Now.getTime())

+ "----程序运行时间为:" + hr + "小时" + mr + "分"

+ sr + "秒。");

Now = Calendar.getInstance();// 现在的时间

long SleepTime = OFF_RestTime * 60 * 1000 - RunTime;

int hs = (int) SleepTime / 1000 / 60 / 60;

int ms = (int) SleepTime / 1000 / 60 - hs * 60;

int ss = (int) SleepTime / 1000 - hs * 60 * 60 - ms * 60;

System.out.println("Auto_Prepare.java====现在时刻北京时间:"

+ sdfTime_ALL.format(Now.getTime())

+ "----时间不是0点,不做准备工作,线程睡眠:" + hs + "小时" + ms + "分"

+ ss + "秒。");

try {

Auto_Prepare.sleep(SleepTime);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}// while(true)

} else if (way == 2) {

}

}

private void PrepareData(Calendar now) {

//准备工作,即你需要让程序处理的事情

}

}

java定时扫描的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java调用扫描仪、java定时扫描的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-04,除非注明,否则均为首码项目网原创文章,转载请注明出处。