1.
程序启动后,每天在特定的时间调用一个方法
我想写一个程序,这个程序启动之后一般不会关闭,同时在程序启动之后将每天
通过获取系统时间进行一个判断,在某个特定的时间(如16:00)调用一个方法.并执行.
请问这个改怎么写呢!?_________________________________________________________________
2.
在知道ftp地址(或其他局域网内地址)的前提下,怎样实现用java代码编写方法来访问这个ftp,并将ftp上的某个文件下载到自己的电脑上?
大家知道一点相关的信息的就说说啊...小弟急用...

解决方案 »

  1.   

    第一个问题:你可以用Timer类的对象调用扩展了TimerTask类的对象来执行每天定时的操作,应该可以
      

  2.   

    第一个问题:你可以用Timer类的对象调用扩展了TimerTask类的对象来执行每天定时的操作,应该可以
      

  3.   

    如果你的程序是每时每刻都运行,用 quartz 调度框架还是插好用的.
    它支持定时调度,周期调度和类似于LINUX crontab 的调度方式.如果你的程序不是每时每刻都在运行,那就要用操作系统的调度了.
      

  4.   

    不知道楼上的人为什么说我的目的邪恶,哎,你连我做的东西都不知道凭说明就YY我的目的很邪恶呢...哎. 
    那我把我的目的说明下,我想通过编写的程序来自动访问一个ftp地址,在这个ftp地址里面有每天都会有人负责往里面放入oracle的dmp文件,而我需要定时将这个dmp文件下载下来导入我这边的数据库中.这是公司的一个项目要完善的一部分(现在都是手动拷贝导入),我现在想试着写一下能实现自动导入,现在请高手赐教.

    同时我想申明下,技术没有邪恶之分.只有用途有邪恶之分.如果大家对我的RP抱有极高的不信任的话您可以选择不回帖.或者回帖说一些...
      

  5.   

       int numberOfMillisecondsInTheFuture = 10000; // 10 sec
        Date timeToRun = new Date(System.currentTimeMillis()+numberOfMillisecondsInTheFuture);
        Timer timer = new Timer();
        
        timer.schedule(new TimerTask() {
                public void run() {
                    // Task here ...
                }
            }, timeToRun);
      

  6.   

    可以用spring自带的定时器,到时间自动运做
      

  7.   

    http://dev.csdn.net/article/31/31448.shtm第二问
      

  8.   

    用JavaScript去编写一段代码,在用java或jsp去调用这段代码即可,就可以实现"程序启动后,每天在特定的时间调用一个方法"
      

  9.   

    定时任务调度优先考虑quartz,功能非常强大和简单
      

  10.   

    哥们,用这个开源框架,http://www.opensymphony.com/quartz/ ,可以满足。。
    前段时间,我们做了一个项目,跟你的需求一样。是关于附件清理的。。需要一个月中的某一天的某一时刻对文件进行选择性的清理。。
      

  11.   

    1、使用Timer可以简单实现,如果使用Quartz代价比较大。
      

  12.   

    我也刚学java,才几天而已,不过第一个问题好像很简单,随便多看点书应该就能做出来的.
      

  13.   

    我也刚学java,那两个问题好像都是比较基础的,不过我才业余的学了两天,书上应该有,随便看点书应该就能做出来的.
      

  14.   

    用线程是可以做到的,这个线程的run方法里用while(true)来控制,而在这里面去判断时间就可以了,只要程序不关闭,哪么这个程序中的线程就会一直的运行而不会中断~~
      

  15.   

    第一个问题,有几种解决方式:
          1、使用使系统的任务计划:
             把你写好的程序打成jar包,在java包内确定主运行类,住运行类内通过mian方法调用相关方法执行相关任务。
             设置系统的任务计划定时执行jar。
             系统的计划任务:控制面板===任务计划===添加任务计划
          2:通过web服务器和spring的依赖注入调用Spring的任务调度来实现:
             通过配置web.xml调用Spring的依赖注入的xml配置文件,在xml实现Spring的任务调度实现定时处理。
             (Spring的依赖注入和任务调度(或定时处理)网上有很多资料,可自己查询)
    第二个问题:
    package ftp; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List; import sun.net.TelnetInputStream;import sun.net.TelnetOutputStream;import sun.net.ftp.FtpClient; public class Ftp {     private FtpClient ftpClient;     /**     * 连接FTP服务器     *      * @param server FTP服务器IP地址     * @param user 登录名     * @param password 密码     * @throws IOException     */    public void connectServer(String server, String user, String password)           throws IOException {       ftpClient = new FtpClient();       ftpClient.openServer(server);       ftpClient.login(user, password);       ftpClient.binary();    }     /**     * 连接FTP服务器,并指定登录路径     *      * @param server FTP服务器IP地址     * @param user 登录名     * @param password 密码     * @param path 登录路径     * @throws IOException     */    public void connectServer(String server, String user, String password,           String path) throws IOException {       ftpClient = new FtpClient();       ftpClient.openServer(server);       ftpClient.login(user, password);       ftpClient.cd(path);       ftpClient.binary();    }          /**     * 上传文件.上传成功返回1,上传失败返回0.     *      * @param iniputStream 上传文件的输入流     * @param newName 上传文件后对文件的重命名     * @return int     * @throws IOException     */    public int upload(InputStream in, String newName) throws IOException {        TelnetOutputStream os = null;        try {           // 命名文件           os = ftpClient.put(newName);            byte[] bytes = new byte[1024];           int c;           while ((c = in.read(bytes)) != -1) {              os.write(bytes, 0, c);           }       } catch (IOException e) {           return 0;       } finally {            if (in != null) {              in.close();           }           if (os != null) {              os.close();           }       }        return 1;    }     /**     * 获得文件和目录列表     *      * @return     * @throws IOException     */    public List getFileList() throws IOException {       List list = new ArrayList();       TelnetInputStream in = ftpClient.nameList(".");       BufferedReader bf = new BufferedReader(new InputStreamReader(in));       String l = null;       while ((l = bf.readLine()) != null) {           if (!l.equals(".") && !l.equals(".."))              list.add(l);       }       return list;    }     /**     * 下载文件     *      * @param fileName     * @return     * @throws IOException     */    public InputStream getFile(String fileName) throws IOException {       TelnetInputStream in = null;       in = ftpClient.get(fileName);       return in;    }     /**     * 转到指定目录     *      * @param path     * @throws IOException     */    public void cdPath(String path) throws IOException {       ftpClient.cd(path);    }     /**     * 关闭FTP服务     *      * @throws IOException     */    public void closeFTPClient() throws IOException {        if (ftpClient != null)           ftpClient.closeServer();    }} java中实现FTP的上传下载删除等资料网上有很多,找找看,然后稍作修改改成与自己的程序相适应的即可
      

  16.   

    Quartz 能嵌入在其他应用程序里运行。 
    Quartz 能在一个应用服务器里被实例化(或servlet容器), 并且参与XA事务 
    Quartz能独立运行(通过JVM),或者通过RMI 
    Quartz能被集群实例化 
      

  17.   

    如果是web, servlet就可以了,配置下
      

  18.   

    Process ps = Runtime.getRuntime().exec(cmd);
    ps.waitFor();public class CountTime { public static void main(String[] args) {
    long start = System.currentTimeMillis();
    String cmd = "java Factorial";
    if(args.length == 0)
    System.out.println("输入错误!");
    else
    cmd += args[0];
    try {
    Process ps = Runtime.getRuntime().exec(cmd);
    ps.waitFor();

    long end = System.currentTimeMillis();
    System.out.println("运行时间为"+(end - start)+"毫秒");
    } catch (Exception e) {
    e.printStackTrace();
    }

    }}这是调用另一个程序的类,只要把cmd换车你想要的东西就OK了!
      

  19.   


    package tutorial;import java.util.Calendar;
    import java.util.Timer;
    import java.util.TimerTask;public class Time {
      
    public static void main(String[] args) {
     Timer timer=new Timer();
            Calendar date=Calendar.getInstance();
            date.set(Calendar.HOUR, 8);  设定时
            date.set(Calendar.MINUTE, 8);设定分
            date.set(Calendar.SECOND, 8);设定秒
               timer.schedule(new TimerTask(){
             public void run() {
                    System.out.println("我来运行计划任务");
                }}, date.getTime(),24*60*60*1000); 
    }


    }