安卓:如何下载而不被损坏的FTP文件? [英] Android: How to download a ftp file without being corrupted?

查看:647
本文介绍了安卓:如何下载而不被损坏的FTP文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这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)

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆