2016-07-20 10 views
0

を使用してFTPからファイルは、私が見ることを期待:ダウンロード私はしかし、私はFTPからファイルをダウンロードするために同じ方法を使用したいftp4j使用してファイルをアップロードする方法を知っているftp4j

  1. サーバーのディレクトリ(をhttpdocs /フォルダ/へ/ダウンロード/から/ file.extension)
  2. ローカルディレクトリ(/sdcard/folder/to/download/to/file.extension)ここで

は、私がアップロードするために使用するコードは次のとおりです。

file_destination = new File(filDir +"/"+fileName); // where fileDir + filename = sdcard/document/file.txt 

private void uploadImage() { 
    // TODO Auto-generated method stub 

    file_destination_string = file_destination.toString(); 
    upload_file = new File(file_destination_string); 
    uploadFile(upload_file); 

} 
    private void uploadFile(File f) { 
    // TODO Auto-generated method stub 
     client = new FTPClient(); 
     try { 
      client.connect(FTP_HOST,21);   //where HOST is ip address of server 
      client.login(FTP_USER, FTP_PASS);   // FTP user/password 
      client.setType(FTPClient.TYPE_BINARY); 
      client.changeDirectory(FTP_DIR);   //where FTP_DIR = /httpdocs/folder/ 
      client.upload(f, new MyTransferListener());  

     } catch (Exception e) { 
      Toast.makeText(getBaseContext(), "FTP Failed: "+e, Toast.LENGTH_SHORT).show(); 
      System.out.println("e1..."+e); 
      e.printStackTrace(); 
      try { 
       client.disconnect(true); 

       Log.e("MYAPP", "exception", e); 
       System.out.println("e2..."); 
      } catch (Exception e2) { 
       System.out.println("e3..."); 
       e2.printStackTrace(); 
      } 
     } 
    } 
    public class MyTransferListener implements FTPDataTransferListener { 

     public void started() { 
      Toast.makeText(getBaseContext(), " Upload Started ...", Toast.LENGTH_SHORT).show(); 
     } 

     public void transferred(int length) { 
      Toast.makeText(getBaseContext(), " transferred ..." + length, Toast.LENGTH_SHORT).show(); 
     } 

     public void completed() { 
      Toast.makeText(getBaseContext(), " completed ...", Toast.LENGTH_SHORT).show(); 
     } 

     public void aborted() { 
      Toast.makeText(getBaseContext()," transfer aborted, please try again...", Toast.LENGTH_SHORT).show(); 
     } 

     public void failed() { 
      Toast.makeText(getBaseContext()," failed..", Toast.LENGTH_SHORT).show(); 
     } 
} 

ファイルをダウンロードするにはどうすればよいですか?

+1

あなただけの 'client.download(「myfile.txtの」、新しいJavaを使用することができます。 io.File( "d:/myfile.txt")); 'これは" myfile.txt "を" D:\ myfile.txt "にダウンロードします。 – Bobby

+0

PC上にないAndroidデバイスとの間でアップロードしてダウンロードしようとしています – TwoStarII

+0

"D:\ myfile.txt"を "/sdcard/myfile.txt"に置き換えてください – Bobby

答えて

0

- ここ

void download(java.lang.String remoteFileName, java.io.File localFile) 
      This method downloads a remote file from the server to a local file. 

は、APIのリンクです。

client.download("myfile.txt", new java.io.File("d:/myfile.txt"));これは、 "myfile.txt"を "D:\ myfile.txt"にダウンロードします。

アンドロイドのため、全体が少し異なります。 あなたは(SDカード上の例のために)定義されたフォルダにファイルを保存したい場合、あなたはこのようにそれを使用することができます:あなたがアプリケーションのデフォルトのデータディレクトリにダウンロードしない場合は、

client.download("myfile.txt", new java.io.File("/sdcard/myfile.txt"));

メソッドcontext.getExternalFilesDir()を使用することができます。 nullをパラメータとして渡した場合、これは外部ストレージのアプリケーションのプライベートディレクトリのルートディレクトリを返します。ここ

詳細情報:https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

また、ここではAndroidDevelopersを引用する:

KITKAT以降、何の権限が返されたパスを読み取りまたは への書き込みをする必要はありません。それは常に呼び出し側のアプリケーションにアクセス可能です。この は、呼び出し元の アプリケーションのパッケージ名に対して生成されたパスにのみ適用されます。他のパッケージに属するパスにアクセスするには、 WRITE_EXTERNAL_STORAGEおよび/またはREAD_EXTERNAL_STORAGEが必要です。

したがって、自分のアプリケーションファイルにアクセスするためにこの2つのアクセス許可は必要ありません。

最後に、このコードは、ファイルをダウンロードする必要があり、ちょうどアプリのデフォルトのディレクトリに新しいファイルを作成します。

client.download("myfile.txt", new java.io.File(context.getExternalFilesDir(null), "myfile.txt"));

関連する問題