安卓:如何下载而不被损坏的FTP文件? [英] Android: How to download a ftp file without being corrupted?
问题描述
这code现在工作。仅logcat中的铅与其他PPL背部问题的
我怎么能下载从我的FTP服务器不beeing损坏(下载的文件)的文件?
我可以下载该文件,但它有0字节....
但都是一样的txt文件,巴纽,.EXE,的apk文件被损坏,每次/我的手机上读取(0字节)。
比如我叫init.txt FTP服务器上的文件(它包含其下面的文字:testfileini !!),它的大小是FTP 13字节和0字节的手机
OnItemClickListener (适用于直接选择从FTP文件列表中的文件)
lv.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
字符串文件=(字符串)lv.getItemAtPosition(位置);
新DownloadFile()执行(文件);
} });
的AsyncTask Downloadfile (在后台下载)
私有类DownloadFile扩展的AsyncTask<字符串,整数,字符串> {
@覆盖
保护字符串doInBackground(字符串...文件名){
尝试{
的System.out.println(Filename-计算值:+文件名[0]);
GetFileFTP(/子域/ giveyourapps /的httpdocs /应用程序/+文件名[0],Environment.getExternalStorageDirectory()+/下载/,文件名[0]); } {最后
disconnectFTP();
}
返回null;
}
}
GetFileFTP
公共无效GetFileFTP(字符串srcFileSpec,字符串destpath,串了destname){
FTPClient客户端=新FTPClient();
Log.v(pathSpec:,destpath); 尝试{
client.connect(176.28.25.46);
client.login(ftp031220,hSigSf); client.enterLocalPassiveMode();
client.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE); 输入的InputStream = client.retrieveFileStream(srcFileSpec);
如果(输入!= NULL)Log.v(GetFileFTP:,输入流成功打开);
Log.v(的FileInputStream:,srcFileSpec); 文件OUTPUT_FILE =新的文件(destpath +了destname);
Log.v(OUTPUTFILE:,destpath +了destname); inputstreamcopy(输入,OUTPUT_FILE); disconnectFTP(); }赶上(IOException异常五){
Log.e(FTP,错误获取文件);
e.printStackTrace();
}
}
copyInputStreamToFile
公共静态无效inputstreamcopy(源的InputStream,
文件目标){
尝试{
org.apache.commons.io.FileUtils.copyInputStreamToFile(源,目的);
}赶上(IOException异常五){
// TODO自动生成catch块
e.printStackTrace();
}
}
LogCat中
15 11-07:09:08.675:D / GestureDetector(15746):表面触摸事件] mSweepDown假,mLRSDCnt:-1 mTouchCnt:3 mFalseSizeCnt:0
11-07 15:09:08.905:我/的System.out(15746):ProFTPD的状态:: 211-状态11-07 15:09:08.905:我/的System.out(15746):从109.164.221.167(109.164.221.167)连接11-07 15:09:08.905:我/的System.out(15746):已记录作为ftp03122011-07 15:09:08.905:我/的System.out(15746):类型:二进制,结构:文件,模式:流11-07 15:09:08.905:我/的System.out(15746):无数据连接11-07 15:09:08.910:我/的System.out(15746):211结束的状态11-07 15:09:09.025:D / dalvikvm(15746):GC_CONCURRENT释放93K,免费12464K / 13703K 10%,暂停15ms的12ms的+,总58ms
11-07 15:09:09.390:我/的System.out(15746):文件 - 计算值:1Tap_Cleaner_Pro_v1.45.apk
11-07 15:09:09.390:我/的System.out(15746):文件 - 计算值:AppBrain_App_Market_v7.5.apk
11-07 15:09:09.395:我/的System.out(15746):文件 - 计算值:Apparatus_v1.0.4_ADFREE_ANDROiD-P2P.apk
11-07 15:09:09.395:我/的System.out(15746):文件 - 计算值:Atomic_Bomber_5.0.apk
11-07 15:09:09.395:我/的System.out(15746):文件 - 计算值:IMG_20120917_120935.jpg
11-07 15:09:09.395:我/的System.out(15746):文件 - 计算值:init.txt
11-07 15:09:09.395:我/的System.out(15746):文件 - 计算值:unnamed.png
11-07 15:09:09.500:E / SpannableStringBuilder(15746):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能有长度为零
11-07 15:09:09.500:E / SpannableStringBuilder(15746):SPAN_EXCLUSIVE_EXCLUSIVE跨度不能有长度为零
11-07 15:09:13.805:D / GestureDetector(15746):表面触摸事件] mSweepDown假,mLRSDCnt:-1 mTouchCnt:2 mFalseSizeCnt:0
11-07 15:09:13.880:我/的System.out(15746):Filename-计算值:init.txt
11-07 15:09:13.880:V / pathSpec:(15746):/存储/ sdcard0 /下载/
11-07 15:09:14.310:V / GetFileFTP:(15746):输入流成功打开
11-07 15:09:14.310:V /的FileInputStream:(15746):/subdomains/giveyourapps/httpdocs/apps/init.txt
11-07 15:09:14.310:V / OUTPUTFILE:(15746):/storage/sdcard0/Download/outputfile.txt
11-07 15:09:14.310:I / dalvikvm(15746):主题ID = 11:在调用堆栈溢出LCOM / mseiz /给/你/应用/ MainSite; .copyInputStreamToFile:VLL
11-07 15:09:14.310:I / dalvikvm(15746):该方法需要8 + 20 + 8 = 36个字节,FP是0x5ec4b310(16左右)
11-07 15:09:14.310:I / dalvikvm(15746):扩展堆栈端(0x5ec4b300到0x5ec4b000)
11-07 15:09:14.315:I / dalvikvm(15746):缩小栈(以0x5ec4b300,当前帧是0x5ec4eeb0)
11-07 15:09:14.315:W / dalvikvm(15746):主题ID = 11:螺纹未捕获的异常(组= 0x40d9f2a0)退出
11-07 15:09:14.375:D / dalvikvm(15746):GC_CONCURRENT释放283K,免费10%12654K / 14023K,暂停+ 14ms的11毫秒,总47ms
11-07 15:09:14.405:D / dalvikvm(15746):GC_FOR_ALLOC释放314K,免费12682K / 14215K,暂停10毫秒,10毫秒总额11%
11-07 15:09:14.405:E / AndroidRuntime(15746):致命异常:AsyncTask的#1
11-07 15:09:14.405:E / AndroidRuntime(15746):了java.lang.RuntimeException:执行doInBackground发生错误()
11-07 15:09:14.405:E / AndroidRuntime(15746):在android.os.AsyncTask $ 3.done(AsyncTask.java:299)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.util.concurrent.FutureTask.setException(FutureTask.java:124)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-07 15:09:14.405:E / AndroidRuntime(15746):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)
11-07 15:09:14.405:E / AndroidRuntime(15746):在java.lang.Thread.run(Thread.java:856)
11-07 15:09:14.405:E / AndroidRuntime(15746):由:java.lang.StackOverflowError
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405:E / AndroidRuntime(15746):在com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(马
11-07 15:09:14.420:D / dalvikvm(15746):GC_CONCURRENT释放553K,免费12%12644K / 14343K,暂停2MS + 2ms的,12ms的总
11-07 15:09:14.420:D / dalvikvm(15746):WAIT_FOR_CONCURRENT_GC 9ms的受阻
11-07 15:09:14.440:D / dalvikvm(15746):GC_CONCURRENT释放324K,免费11%12802K / 14343K,暂停1毫秒+ 2ms的,总17MS
这行:
的ReadBytes(输入);
不执行任何操作。你需要写那些返回的字节到的FileOutputStream
。顺便说一句,可以考虑使用<一个href=\"http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html#copy%28java.io.InputStream,%20java.io.OutputStream%29\"相对=nofollow> org.apache.commons.io.IOUtils.copy(的InputStream,OutputStream的)
或相似。存储字节数组在内存中可以抛出 OutOfMemoryError异常
如果下载的文件是足够大的。
更新:结果
更妙的是:结果
<一href=\"http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html#copyInputStreamToFile%28java.io.InputStream,%20java.io.File%29\" rel=\"nofollow\"><$c$c>org.apache.commons.io.FileUtils.copyInputStreamToFile(InputStream,File)$c$c>
This code is working now. LogCat only for lead back problems from other ppl
How can I download a file from my ftp server without beeing damaged (the downloaded file)? I can download the file but it has 0 Bytes....
But all the same .txt, .png, .exe, .apk files are everytime damaged / unreadable (0 Bytes) on my phone. For example with a file on my ftp server called init.txt (it contains following text in it : "testfileini!!") its size is 13 Bytes on ftp and 0 Bytes on phone.
OnItemClickListener (for directly selecting a file from the ftp file list)
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String file = (String) lv.getItemAtPosition(position);
new DownloadFile().execute(file);
}
});
AsyncTask Downloadfile (for downloading in background)
private class DownloadFile extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... filename) {
try {
System.out.println("Filename->: " + filename[0]);
GetFileFTP("/subdomains/giveyourapps/httpdocs/apps/"+filename[0], Environment.getExternalStorageDirectory() + "/Download/", filename[0]);
} finally {
disconnectFTP();
}
return null;
}
}
GetFileFTP
public void GetFileFTP(String srcFileSpec, String destpath, String destname) {
FTPClient client = new FTPClient();
Log.v("pathSpec: ", destpath);
try {
client.connect("176.28.25.46");
client.login("ftp031220", "hSigSf");
client.enterLocalPassiveMode();
client.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
InputStream input = client.retrieveFileStream(srcFileSpec);
if(input != null) Log.v("GetFileFTP: ", "Input Stream Opened successfully");
Log.v("Fileinputstream: ", srcFileSpec);
File output_file = new File(destpath + destname);
Log.v("OUTPUTFILE: ", destpath + destname);
inputstreamcopy(input, output_file);
disconnectFTP();
}catch (IOException e) {
Log.e("FTP", "Error Getting File");
e.printStackTrace();
}
}
copyInputStreamToFile
public static void inputstreamcopy(InputStream source,
File destination){
try {
org.apache.commons.io.FileUtils.copyInputStreamToFile(source, destination);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
LogCat
11-07 15:09:08.675: D/GestureDetector(15746): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 3 mFalseSizeCnt:0
11-07 15:09:08.905: I/System.out(15746): status :: 211-Status of 'ProFTPD'
11-07 15:09:08.905: I/System.out(15746): Connected from 109.164.221.167 (109.164.221.167)
11-07 15:09:08.905: I/System.out(15746): Logged in as ftp031220
11-07 15:09:08.905: I/System.out(15746): TYPE: BINARY, STRUcture: File, Mode: Stream
11-07 15:09:08.905: I/System.out(15746): No data connection
11-07 15:09:08.910: I/System.out(15746): 211 End of status
11-07 15:09:09.025: D/dalvikvm(15746): GC_CONCURRENT freed 93K, 10% free 12464K/13703K, paused 15ms+12ms, total 58ms
11-07 15:09:09.390: I/System.out(15746): Files->: 1Tap_Cleaner_Pro_v1.45.apk
11-07 15:09:09.390: I/System.out(15746): Files->: AppBrain_App_Market_v7.5.apk
11-07 15:09:09.395: I/System.out(15746): Files->: Apparatus_v1.0.4_ADFREE_ANDROiD-P2P.apk
11-07 15:09:09.395: I/System.out(15746): Files->: Atomic_Bomber_5.0.apk
11-07 15:09:09.395: I/System.out(15746): Files->: IMG_20120917_120935.jpg
11-07 15:09:09.395: I/System.out(15746): Files->: init.txt
11-07 15:09:09.395: I/System.out(15746): Files->: unnamed.png
11-07 15:09:09.500: E/SpannableStringBuilder(15746): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
11-07 15:09:09.500: E/SpannableStringBuilder(15746): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
11-07 15:09:13.805: D/GestureDetector(15746): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 2 mFalseSizeCnt:0
11-07 15:09:13.880: I/System.out(15746): Filename->: init.txt
11-07 15:09:13.880: V/pathSpec:(15746): /storage/sdcard0/Download/
11-07 15:09:14.310: V/GetFileFTP:(15746): Input Stream Opened successfully
11-07 15:09:14.310: V/Fileinputstream:(15746): /subdomains/giveyourapps/httpdocs/apps/init.txt
11-07 15:09:14.310: V/OUTPUTFILE:(15746): /storage/sdcard0/Download/outputfile.txt
11-07 15:09:14.310: I/dalvikvm(15746): threadid=11: stack overflow on call to Lcom/mseiz/give/your/apps/MainSite;.copyInputStreamToFile:VLL
11-07 15:09:14.310: I/dalvikvm(15746): method requires 8+20+8=36 bytes, fp is 0x5ec4b310 (16 left)
11-07 15:09:14.310: I/dalvikvm(15746): expanding stack end (0x5ec4b300 to 0x5ec4b000)
11-07 15:09:14.315: I/dalvikvm(15746): Shrank stack (to 0x5ec4b300, curFrame is 0x5ec4eeb0)
11-07 15:09:14.315: W/dalvikvm(15746): threadid=11: thread exiting with uncaught exception (group=0x40d9f2a0)
11-07 15:09:14.375: D/dalvikvm(15746): GC_CONCURRENT freed 283K, 10% free 12654K/14023K, paused 14ms+11ms, total 47ms
11-07 15:09:14.405: D/dalvikvm(15746): GC_FOR_ALLOC freed 314K, 11% free 12682K/14215K, paused 10ms, total 10ms
11-07 15:09:14.405: E/AndroidRuntime(15746): FATAL EXCEPTION: AsyncTask #1
11-07 15:09:14.405: E/AndroidRuntime(15746): java.lang.RuntimeException: An error occured while executing doInBackground()
11-07 15:09:14.405: E/AndroidRuntime(15746): at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-07 15:09:14.405: E/AndroidRuntime(15746): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-07 15:09:14.405: E/AndroidRuntime(15746): at java.lang.Thread.run(Thread.java:856)
11-07 15:09:14.405: E/AndroidRuntime(15746): Caused by: java.lang.StackOverflowError
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(MainSite.java:119)
11-07 15:09:14.405: E/AndroidRuntime(15746): at com.mseiz.give.your.apps.MainSite.copyInputStreamToFile(Ma
11-07 15:09:14.420: D/dalvikvm(15746): GC_CONCURRENT freed 553K, 12% free 12644K/14343K, paused 2ms+2ms, total 12ms
11-07 15:09:14.420: D/dalvikvm(15746): WAIT_FOR_CONCURRENT_GC blocked 9ms
11-07 15:09:14.440: D/dalvikvm(15746): GC_CONCURRENT freed 324K, 11% free 12802K/14343K, paused 1ms+2ms, total 17ms
This line:
readBytes(input);
Does nothing. You need to write those returned bytes to the FileOutputStream
. BTW, consider using org.apache.commons.io.IOUtils.copy(InputStream, OutputStream)
or similar. Storing the byte array in memory can throw OutOfMemoryErrors
if the downloaded files are large enough.
UPDATE:
Better yet:
org.apache.commons.io.FileUtils.copyInputStreamToFile(InputStream,File)
这篇关于安卓:如何下载而不被损坏的FTP文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!