JAVA的Timer方面超难的问题!!!!望大家能帮忙!!谢谢

leozzc 2006-04-22 11:49:02
我想通过FTP传送.txt文件到Liunx系统下,因为在传送过程中,Liunx系统下的这个.txt文件的大小会逐渐增加,即每次刷新大小都会增加,我想通过Timer编一个程序,来实现实时监控着文件的大小的变化,如果文件传送完毕,即文件大小不会再变化,此时这个线程自动取消退出。如果没有传送完毕,线程一直监听着。

现在遇到的问题是,因为定时每隔一段时间执行一次。也能监测到文件的变化,但是传完之后,还是一直处与死循环状态。我想等文件传完之后,就取消此线程。然后返回文件传送完毕。

这个问题我都想一周了。头都大了。希望高手能够帮帮忙。谢谢大家!!!

...全文
386 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzhzzh204553 2006-05-04
  • 打赏
  • 举报
回复
像上面说的,你可以在想取消的地方调用timer.cancel()

还有一个方法就是,你在TimerTask类使用一个字段.
用来保存上次访问文件的大小,
如果第二次查看的文件大小和
上次查看到的文件大小一样的话,就表示文件传送完了.
xuyangkui2004 2006-05-02
  • 打赏
  • 举报
回复
学习
zouxinfox 2006-04-30
  • 打赏
  • 举报
回复
上面这个程序只是告诉你一个思路,具体还需要你自己去用
zouxinfox 2006-04-30
  • 打赏
  • 举报
回复
我刚解决了一个和你一模一样的问题,很简单
用TimeTask类
class MyTimerTask extends TimerTask {
public MyTimerTask() {
};

public void run() {
try {
// 80,000,000 bytes=80M
if (fileContent.length() >= 80000000L) {// 文件大于80M就新开一个文件
fconNum++;
fileContent = new File("E://test//content" + fconNum
+ ".txt");
fwcontent = new FileWriter(fileContent);

}
System.gc();

} catch (IOException e) {
System.err.println(e);
}
}
}
在你的主程序中添加Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 50, 200);
来启动这个后台线程。
在你希望这个线程结束的地方添加timer.cancel();
一定可以的。
xxedge 2006-04-24
  • 打赏
  • 举报
回复
能不能等待多少个循环后字节数没有变化就认为结束了
或者实现传递总字节数,文件实际字节数等于这个后就结束线程
zx2002027 2006-04-23
  • 打赏
  • 举报
回复
但是传完之后,还是一直处与死循环状态
看不明白
帮顶
Preamble 2006-04-23
  • 打赏
  • 举报
回复
没看懂,为什么不是发送万就传一结束事件/

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧