ftp文件下载结果为黑屏

时间:2013-08-15 23:18:07

标签: android ftp download screen

我从ftp服务器下载文件。下载代码工作正常,但是在下载代码屏幕没有显示任何内容后,它会变黑。即使文件保存在指定目录中,下载函数也不会返回true值。

  public class FTPClass{
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_file_player);

                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    Intent intent = getIntent();
    dirname = intent.getStringExtra("currentDirName");


    MyFTPClient mftp = new MyFTPClient();
    createPath = mftp.getAppRootPath().concat("/"+ dirname);
    mftp.setCurrentDir(createPath);
    System.out.println(mftp.ftpChangeDirectory(createPath));

    FTPFile[] farr = mftp.ftpListAllFiles();
    System.out.println(farr.length);

    for(int i = 0; i<farr.length;i++){
        System.out.println("SRC: "+createPath+"/"+farr[i].getName());

        String src = createPath+"/"+farr[i].getName();
        System.out.println("DEST: "+"/data/data/com.example.ftpplayer" + "/app_"+dirname);
        String dest ="/data/data/com.example.ftpplayer" + "/app_"+dirname+"/"+farr[i].getName();
        System.out.println(mftp.downloadFile(src,dest));
    }
}
}

public class CallingIntent extends Activity{
        System.out.println("In item click ");
            Intent intent = new Intent(getApplicationContext(), FTPClass.class);
            String dir = ((TextView) view).getText().toString();
            intent.putExtra("currentDirName", dir);
            startActivity(intent);

}
 public class MyFTPClient{

 public boolean downloadFile(String srcPath , String destPath){

    try {
        FileOutputStream fos = new FileOutputStream(destPath);
        System.out.println(mftp.retrieveFile(srcPath, fos)); // retrieve file doesn't return true
        fos.flush();
        fos.close();
        return true;
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }catch(IOException e){
        e.printStackTrace();
    }
    return false;
}

}

1 个答案:

答案 0 :(得分:0)

您需要在后台线程上运行代码,尝试使用asyncTask。