Java 从FTP下载文件
我有一个应用程序,每3分钟从FTP服务器下载文件,然后读取它。 我的问题是,这个FTP传输只在应用程序启动的第一次工作,当计时器下次运行此方法时,应用程序崩溃。 下面是我如何使用计时器调用该方法Java 从FTP下载文件,java,timer,ftp,Java,Timer,Ftp,我有一个应用程序,每3分钟从FTP服务器下载文件,然后读取它。 我的问题是,这个FTP传输只在应用程序启动的第一次工作,当计时器下次运行此方法时,应用程序崩溃。 下面是我如何使用计时器调用该方法 Timer t2 = new Timer(180000, new ClockListener2()); t2.start(); 然后 public class ClockListener2 implements ActionListener { public void a
Timer t2 = new Timer(180000, new ClockListener2());
t2.start();
然后
public class ClockListener2 implements ActionListener {
public void actionPerformed(ActionEvent ae) {
downloadFtp();
}
现在是FTP传输方法
public void downloadFtp() {
FTPClient client = new FTPClient();
FileOutputStream fos = null;
try {
client.connect("192.168.1.102");
client.login("anonymous", "");
String filename = "text.txt";
fos = new FileOutputStream(filename);
client.retrieveFile("/" + filename, fos);
client.logout();
client.disconnect();
if (fos != null) {
fos.close();}
} catch (Exception e) {
e.printStackTrace();
}
}
以前有人遇到过这个问题吗?有什么不对劲吗
谢谢。您可以将设备连接到ADB以查看设备打印的日志(请参阅)。如果您的应用程序崩溃,您将看到一些致命的异常跟踪(通常非常有用),例如:
e.printStackTrace()的输出是什么?您可以把它放在这里吗?您应该尝试在
finally
块中断开并关闭流,以确保在出现任何异常时将其清除。我也会使用SwingWorker
而不是javax.swing.Timer
或java.util.Timer
如果它不是swing应用程序,我发现,应用程序在windows下运行没有任何问题,但在linux(Xubuntu)下会崩溃。两台机器上都有相同版本的java 1.7.0_25。这是Java运行时而不是代码中的问题吗?发布异常消息。这可能是由于应用程序无法覆盖该文件造成的。
07-24 09:33:59.285: ERROR/AndroidRuntime(4858): FATAL EXCEPTION: main
java.lang.NullPointerException
at ***.daifan.activity.***Activity.onCreateOptionsMenu(***ListActivity.java:96)
at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:44)
at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559)
at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:65)
at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:165)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:417)
at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:768)
at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:3009)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
at dalvik.system.NativeStart.main(Native Method)