1

次のコード セグメントを使用して、Android フォンの SD カードにファイルをダウンロードしています。Wireshark トレースでは、ファイルが転送され、FTP 転送完了メッセージも表示されます。ただし、SD カード内のファイルのサイズはゼロです。必要な権限はすべてマニフェスト ファイルに設定されています。誰でも助けることができますか?FileOutputStream でも動作しません。

       try{
       ftpClient.connect(InetAddress.getByName("xxx.xxx.xxx.xxx"));        
       ftpClient.login("xxxx", "xxxxx");
       ftpClient.changeWorkingDirectory("xxxx");
       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
       ftpClient.enterLocalPassiveMode();

       //FileOutputStream desFileStream = new FileOutputStream("/sdcard/test25.txt");
       BufferedOutputStream desFileStream = new BufferedOutputStream(new FileOutputStream("/sdcard/test25.txt"),8*1024);

         boolean status=ftpClient.retrieveFile("test.txt", desFileStream);

         if(status){
        Toast toast = Toast.makeText(getApplicationContext(), "Downlaoded", Toast.LENGTH_SHORT);
        toast.show();
         }

       //desFileStream.flush();

       ftpClient.logout();
       ftpClient.disconnect();

       }

       catch (IOException e){
        Toast toast = Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT);
        toast.show();
        }
4

2 に答える 2

1

.flush() 呼び出しがコメントアウトされているのはなぜですか? .flush()'ing と .close()'ing を試しましたか?

ドキュメントによると:

流す()

このストリームをフラッシュして、保留中のすべてのデータが確実にターゲット ストリームに書き出されるようにします。

于 2012-05-04T04:00:49.537 に答える
1

書き込みが完了したら、出力ストリームを閉じる必要があります。

BufferedOutputStream desFileStream = new BufferedOutputStream(new FileOutputStream("/sdcard/test25.txt"),8*1024);
boolean status=ftpClient.retrieveFile("test.txt", desFileStream);
desFileStream.close();
于 2012-05-04T04:00:49.763 に答える