#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, удалите другой код и просто попробуйте создать файл.