我想通过FTP传送.txt文件到Liunx系统下,因为在传送过程中,Liunx系统下的这个.txt文件的大小会逐渐增加,即每次刷新大小都会增加,我想通过Timer编一个程序,来实现实时监控着文件的大小的变化,如果文件传送完毕,即文件大小不会再变化,此时这个线程自动取消退出。如果没有传送完毕,线程一直监听着。现在遇到的问题是,因为定时每隔一段时间执行一次。也能监测到文件的变化,但是传完之后,还是一直处与死循环状态。我想等文件传完之后,就取消此线程。然后返回文件传送完毕。这个问题我都想一周了。头都大了。希望高手能够帮帮忙。谢谢大家!!!
用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();
一定可以的。
用来保存上次访问文件的大小,
如果第二次查看的文件大小和
上次查看到的文件大小一样的话,就表示文件传送完了.