Как я не мог загрузить файл .txt из папки FTP, но могу перечислить файлы и загрузить их?

#java #android #apache-commons-net

Вопрос:

У меня странная проблема , из-за которой я могу подключаться, отправлять файлы в свою папку FTP или перечислять файлы там, но я не смог их загрузить.

Зависимость :

  • Сеть Apache-commons

FTP

 username : test
password :      *(no password)*
 

Разрешение:

папка загрузки доступна для записи, поскольку я программирую POI, она генерирует/записывает файлы в ту же папку. Я не совсем верю, что это проблема с моим разрешением на Android (разрешение на запись также было настроено вручную с помощью настроек)

Код: (функция вызывается в фоновом потоке, она выполняется)

 public static FTPFile[] downloadFiles(String host, String username, String password, int port, String localFilePath, String remoteFilePath) throws IOException {          
        try {
            mFTPClientForDownloadingFiles = new FTPClient();
            // connecting to the host
            mFTPClientForDownloadingFiles.connect(host, port);
            // now check the reply code, if positive mean connection success
            if (FTPReply.isPositiveCompletion(mFTPClientForDownloadingFiles.getReplyCode())) {
                // login using username amp; password
                boolean status = mFTPClientForDownloadingFiles.login(username, password);
                System.out.println("status koneksi download file FTP"   status);
                mFTPClientForDownloadingFiles.setFileType(FTP.BINARY_FILE_TYPE);
                mFTPClientForDownloadingFiles.enterLocalPassiveMode();       
           
                try (
                        FileOutputStream fos = new FileOutputStream(new File(localFilePath.trim()))

                ) {
               boolean isDownloading=  mFTPClientForDownloadingFiles.retrieveFile(remoteFilePath, fos);

                  System.out.println("IS DONWLOADING ? " isDownloading);
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }
        } catch (Exception e) {
            Log.d("FTP_DOWNLOADFILES", "Error: could not connect to host "   e.getCause());
            Log.d("FTP_DOWNLOADFILES", "Error: could not connect to host "   e);
            Log.d("FTP_DOWNLOADFILES", "Error: could not connect to host "   host);
        }

        return files;
    }
 

Звонки

      // Try downloading
                          MainAppUtility.downloadFiles(editTextIP.getText().toString(), String.valueOf(editTextUsername.getText()), String.valueOf(editTextPassword.getText()), 21,"ambil.txt","/storage/emulated/0/Download/hasil.txt");
 

или

      // Try downloading
                          MainAppUtility.downloadFiles(editTextIP.getText().toString(), String.valueOf(editTextUsername.getText()), String.valueOf(editTextPassword.getText()), 21,"/ambil.txt","/storage/emulated/0/Download/hasil.txt");
 

Студия Android говорит, что

Я/System.out: статус конекси скачать файл FTPtrue W/System.err: java.io.FileNotFoundException: /ambil.txt (Файловая система только для чтения) W/System.err: в java.io.FileOutputStream.open0(Собственный метод) W/System.err: в java.io.FileOutputStream.open(FileOutputStream.java:287) W/System.err: в java.io.FileOutputStream.(Поток вывода файлов.java:223) W/System.err: в потоке вывода файлов java.io.(Файловый поток вывода.java:171) W/System.err: в com.кодирование.представление таблицы.Основная полезность.Файлы загрузки(MainAppUtility.java:181)

Это странно, потому что я уверен, что моему FTP-серверу уже дано разрешение

введите описание изображения здесь

Я знаю, что мой сервер FileZilla говорит::

введите описание изображения здесь

Комментарии:

1. FileOutputStream пытается создать и записать файл в хранилище ваших устройств. Это не имеет никакого отношения к FTP. Вы могли бы отказаться от всего кода ftp и просто попытаться создать этот файл. Пожалуйста, сделай.

2. исключение java.io.FileNotFoundException: /ambil.txt (Файловая система только для чтения) звучит очень похоже на то, что файловая система, ну, только для чтения? Как и предлагал blackapps, удалите другой код и просто попробуйте создать файл.