android - 在 Android 上使用 FTP 下载文件

标签 android

这是我的类(class)从ftp下载文件

public void run() {

    FTPClient ftpClient = new FTPClient();
    try {

        ftpClient.connect(server, port);
        ftpClient.login(user, pass);
        ftpClient.enterLocalPassiveMode();
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        String remoteFile1 = "/WhiteList.txt";
        File downloadFile1 = new File("/data/data/com.prosec/files/WhiteList.txt");

        OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));

        boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
        outputStream1.close();

在我的 MainAcitivy 中,我在打开我的应用程序 (OnCreate()) 时实例化了 ftp 类。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.btn);
    btnDicas = (Button) findViewById(R.id.btnDicas);
    out = (TextView) findViewById(R.id.out);
    listView = (ListView) findViewById(R.id.list);
    new Thread(new ReceiveFTP()).start();// HERE

我在这行有问题

OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));

日志:

03-12 09:06:37.704 7457-7509/? I/System.out: Error: /data/data/com.prosec/files/WhiteList.txt: open failed: ENOENT (No such file or directory)
03-12 09:06:37.704 7457-7509/? W/System.err: java.io.FileNotFoundException: /data/data/com.prosec/files/WhiteList.txt: open failed: ENOENT (No such file or directory)
03-12 09:06:37.704 7457-7509/? W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:456)
03-12 09:06:37.712 7457-7509/? W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
03-12 09:06:37.712 7457-7509/? W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
03-12 09:06:37.712 7457-7509/? W/System.err:     at com.prosec.ReceiveFTP.run(ReceiveFTP.java:43)

如果我关闭应用程序,然后再次打开,一切正常。此错误仅在第一次出现

最佳答案

您的问题特别出在 "/data/data/com.prosec/files/WhiteList.txt" 下载路径上。

咨询this page关于保存文件。

您可以通过 getFilesDir() 在内部存储上执行此操作或 getCacheDir() :

File file = new File(context.getFilesDir(), filename);

或在外部存储上使用 Environment类:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), filename);

关于android - 在 Android 上使用 FTP 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35957468/

相关文章:

android - ClassNotFoundException 与 DexPathList

android - 自定义对话框无法正常出现

android - 收集首选项失败,在 C :\Program Files (x86)\Android\android-sdk\platforms\android-19\android. jar 中找不到类 java/lang/Au​​toCloseable

android - 用同一类的另一个 fragment 替换一个 fragment

android - 如何在Android模拟器中将录制的音频文件存储在SDCard中?

设备休眠时 Android AlarmManager RTC 不会暂停

android - 相当于 objective-c 中的 LocationManager .onLocationChanged

PHP 代码返回错误代码 500。出了什么问题?

android - WebView 支持 android wear

连接到地址的 Android 网络错误