2011-11-24 3 views
0

내 앱을 통해 FTP에서 파일을 다운로드하려고합니다. 그러나 내 토스트 중 어느 것도 표시되지 않습니다. 연결되어 있고 파일이 다운로드되었는지 어떻게 확인할 수 있습니까?내 앱이 FTP에서 파일을 다운로드하는지 확인하는 방법

코드 : 전송이 완료 될 때까지 getFileAsStream 차단하기 때문에 송금이 완료 될 때까지

package no.kraftpriser.oversikt; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.SocketException; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.apache.commons.net.PrintCommandListener; 
import org.apache.commons.net.ftp.FTPClient; 

public class KraftpriserActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     FTPClient ftp; 

     Context context = getApplicationContext(); 
     int duration = Toast.LENGTH_SHORT; 
     int duration2 = Toast.LENGTH_LONG; 


     ftp = new FTPClient(); 
     ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); 

     try { 
      int reply; 
      String server = "62.97.235.213"; 
      int port = 21; 
      ftp.connect(server, port); 
      ftp.login("anonymous","nobody"); 
      ftp.enterLocalPassiveMode(); 
      ftp.changeWorkingDirectory("/Fastpris"); 
      InputStream inStream = ftp.retrieveFileStream("2011.txt"); 


      CharSequence tilkoblet = "Connected!"; 

      Toast toastTilkoblet = Toast.makeText(context, tilkoblet, duration2); 
      toastTilkoblet.show(); 

      reply = ftp.getReplyCode(); 

     } catch (SocketException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 

      if (ftp.isConnected()) { 
       try { 
        ftp.disconnect(); 
       } 
       catch (IOException f) { 
        //Do nothing 
       } 
      } 
      CharSequence ikkeTikoblet = "Kunne ikke koble til server"; 
      Toast toastIkkeTilkoblet = Toast.makeText(context, ikkeTikoblet, duration); 
      toastIkkeTilkoblet.show(); 
      e.printStackTrace(); 

     } 

    } 


} 

답변

0

귀하의 "연결"토스트가 표시되지 것입니다. 또한 위의 코드에서 InputStream에 파일을로드하는 중입니다 ... SD 카드 나 내부 저장소에 파일을 저장하려면 입력 스트림을 파일에 기록해야합니다.

다운로드 진행률을 보려면 배경 스레드 (AsyncTask 사용)에서 실제 다운로드를 수행해야합니다. 그런 다음 onProgressUpdate 메소드를 통해 UI 스레드에 상태 업데이트를 게시 할 수 있습니다.

사용중인 FTP 클라이언트에 따라 연결 및/또는 로그인 메소드의 반환 값을 확인하여 각 작업이 성공했는지 확인할 수도 있습니다.

관련 문제