我試圖從FTP服務器下載一些文件與FTPClient
(commons-net-3.3)。從服務器下載文件凍結應用程序,並失去連接
當點擊一個AsyncTask按鈕時,我得到一個FTPFile
s的列表listFiles(path);
。然後我下載喜歡這個列表中的每個文件(所有工作在相同的AsyncTask)
FileOutputStream desFileStream = new FileOutputStream("localfile");
InputStream input = mFTPClient.retrieveFileStream("remotepath");
byte data[] = new byte[512];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
Double porcentaje = ((double) total/(double) tmpFiled.getSize()) * 100;
publishProgress((int) Math.round(porcentaje));
desFileStream.write(data, 0, count);
}
desFileStream.flush();
desFileStream.close();
input.close();
}}
尤其是在input.read(data)
。這必須讀取1024個字節,但在隨機迭代比1024讀取更少的數據,寫它,並在下一次迭代input.read(data)
凍結下載回報已逾時例外
後,該處分的互聯網連接不工作
logcat中顯示了這種例外
09-19 09:59:06.890: W/System.err(13215): java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)
09-19 09:59:06.900: W/System.err(13215): at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:545)
09-19 09:59:06.900: W/System.err(13215): at libcore.io.IoBridge.recvfrom(IoBridge.java:509)
09-19 09:59:06.900: W/System.err(13215): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
09-19 09:59:06.920: W/System.err(13215): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
09-19 09:59:06.920: W/System.err(13215): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
09-19 09:59:06.920: W/System.err(13215): at java.io.FilterInputStream.read(FilterInputStream.java:118)
09-19 09:59:06.920: W/System.err(13215): at java.io.InputStream.read(InputStream.java:162)
09-19 09:59:06.920: W/System.err(13215): at com.asde.telemedicina.FTPHandler.ftpDownload(FTPHandler.java:405)
09-19 09:59:06.920: W/System.err(13215): at com.asde.telemedicina.FTPHandler.doInBackground(FTPHandler.java:167)
09-19 09:59:06.920: W/System.err(13215): at com.asde.telemedicina.FTPHandler.doInBackground(FTPHandler.java:1)
09-19 09:59:06.920: W/System.err(13215): at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-19 09:59:06.920: W/System.err(13215): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-19 09:59:06.920: W/System.err(13215): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-19 09:59:06.930: W/System.err(13215): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-19 09:59:06.930: W/System.err(13215): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-19 09:59:06.930: W/System.err(13215): at java.lang.Thread.run(Thread.java:841)
09-19 09:59:06.930: W/System.err(13215): Caused by: libcore.io.ErrnoException: recvfrom failed: ETIMEDOUT (Connection timed out)
09-19 09:59:06.930: W/System.err(13215): at libcore.io.Posix.recvfromBytes(Native Method)
09-19 09:59:06.930: W/System.err(13215): at libcore.io.Posix.recvfrom(Posix.java:141)
09-19 09:59:06.930: W/System.err(13215): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
09-19 09:59:06.930: W/System.err(13215): at libcore.io.IoBridge.recvfrom(IoBridge.java:506)
09-19 09:59:06.930: W/System.err(13215): ... 14 more
例如在摩托羅拉Moto G中從來沒有發生過,但是在其他發生的事件中卻從未發生過。我',e嘗試了兩個ftpservers。
可能導致問題本地文件權限?
任何人都可以幫我嗎?
應用程序崩潰了嗎?你可以在緩慢連接和大文件的情況下製作進度條 – Gattsu 2014-09-19 08:26:57
我編輯了第一條消息。這個問題似乎是一個超時,但只發生在一些dispositives。 – Hanzo 2014-09-19 09:01:20
我增加了更多信息,問題似乎在'input.read(data)'中。 – Hanzo 2014-09-19 11:37:51