Форум программистов, компьютерный форум CyberForum.ru

Передача файла с FTP в папку загрузки Планшета - Android

Войти
Регистрация
Восстановить пароль
 
alegator74
1 / 1 / 0
Регистрация: 21.08.2016
Сообщений: 17
18.09.2016, 11:53     Передача файла с FTP в папку загрузки Планшета #1
Добрый день, подскажите пожалуйста, почему программа согласно отладчика затыкается на строке с new FileOutputStream(downloadFile1). Сама задача состоит в том что с ФТП я должен скачать файлы, скопировать их на планшет в папку загрузки прочитать из них информацию после чего удалить с планшета. Скачивание я провожу во втором потоке, т.к. в основном это неполучается.
Всего у меня 2 класса
1.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
 
import java.io.IOException;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
 
    public void setBtnFTP(View v) throws IOException {
        DownloadFTP downloadFTP = new DownloadFTP();
 
 
    }
 
 
}
2.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
 
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
 
/**
 * Created by Олег on 16.09.2016.
 */
public class DownloadFTP  {
 
    String address = "77.222.42.180";
    //public static InetAddress getByName(address);
    InetAddress inetAddress;
    int port = 21;
    String username = "мой логин";
    String password = "мой пароль";
 
    DownloadFTP() throws IOException {
 
        //загрузку сделаем во втором потоке
        Runnable r = new Download(address, port, username, password);
        Thread t = new Thread(r);
        t.start();
 
 
    }
 
 
}
 
class Download implements Runnable {
    String host = "";
    int port = 0;
    String log = "";
    String pass = "";
    File downloadedFile = null;
 
    // в этой папке будем искать файлы с расширением .xml
    String ext = ".xml";
 
    public Download(String host, int port, String log, String pass) {
 
        this.host = host;
        this.port = port;
        this.log = log;
        this.pass = pass;
    }
 
    public void run() {
 
        FTPClient ftpClient = new FTPClient();
 
                try
        {
            InetAddress ia = InetAddress.getByName(host);
            ftpClient.connect("77.222.42.180");
            ftpClient.enterLocalPassiveMode();
            ftpClient.login(log, pass);
 
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
 
            ftpClient.changeWorkingDirectory("OBMEN/IN");
 
            FTPFile[] files = ftpClient.listFiles(); //вернем файлы указанной директории
 
            for(FTPFile ftpFile : files)
            {
                
                //DIRECTORY_TYPE - каталог
                if(ftpFile.getType() == FTPFile.FILE_TYPE)
                {
 
                    String nameFile = ftpFile.getName();
                    //проверим есть ли в названии файла необходимое расширение
                    if(nameFile.toLowerCase().endsWith(ext)) {
 
                        String remoteFile1 = ftpClient.printWorkingDirectory().toString()+"/" + nameFile; //отсюда
                        File downloadFile1 = new File("/storage/sdcard0/download/"+ nameFile); //сюда все файлы с расширением .xml
 
//ЗДЕСЬ ОТЛАДЧИК ПОСЛЕДНИЙ РАЗ ОБРАБАТЫВАЕТ ПРОЦЕДУРУ new FileOutputStream
//ПОСЛЕ ЧЕГО ЗАВЕРШАЕТ СВОЮ РАБОТУ
OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1));
                        boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
                        outputStream1.close();
 
 
                                            }
                }
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
 
    }
}
Добавлено через 10 минут
Получается что я к ФТП подсоединился нормально, перебрал все файлы в искомой папке, нашел с нужным мне расширением, а вот скачать никак не могу.

Добавлено через 2 часа 10 минут
e.getMessage() выдает
java.io.FileNotFoundException: /storage/sdcard0/download/666.xml: open failed: ENOENT (No such file or directory)
Я понимаю что это говорит что не найден каталог или файл, но я и пытаюсь прописать что хочу его туда создать, причем пробовал указывать и просто каталог /storage/sdcard0/download - тоже ругается хотя в инете я нашел что при использовании внутренней памяти планшета указывается именно этот путь. Что я делаю непрпавильно, чтобы скачать файл и записать его на планшете?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2016, 11:53     Передача файла с FTP в папку загрузки Планшета
Посмотрите здесь:

Получение системных данных планшета Android
Функция для загрузки файла на сервер Android
Среда разработки для планшета Android
Подскажите как и сложно ли написать кнопку выключения планшета Android
Android Отправка данных с планшета на удаленный компьютер. оптимизация производительности планшета
Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager) Android
Android Получение доступа к дате/времени планшета
Android Можно ли программно узнать заблокирован ли экран у смартфона\планшета и разблокировать его
Система координат акселерометра планшета и телефона Android
Android Эмуляция кнопки включения-выключения для планшета
Android При загрузке файла в AsynkTask в строке уведомлений вывести анимацию иконки загрузки
% загрузки файла Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,864
Завершенные тесты: 1
18.09.2016, 11:58     Передача файла с FTP в папку загрузки Планшета #2
какой смысл их сохранять в download?
папку для кеша использовать нелья?
alegator74
1 / 1 / 0
Регистрация: 21.08.2016
Сообщений: 17
18.09.2016, 11:59  [ТС]     Передача файла с FTP в папку загрузки Планшета #3
можно, подкажите как путь указать правильно, попробую, а то не найду пока таких примеров. Понимаю что tmp но что перед ним и после него?
Паблито
резкий
1896 / 1630 / 508
Регистрация: 12.05.2014
Сообщений: 5,864
Завершенные тесты: 1
18.09.2016, 12:01     Передача файла с FTP в папку загрузки Планшета #4
http://lmgtfy.com/?q=android+save+file+to+cache+dir
alegator74
1 / 1 / 0
Регистрация: 21.08.2016
Сообщений: 17
18.09.2016, 12:03  [ТС]     Передача файла с FTP в папку загрузки Планшета #5
спасибо, сейчас поизучаю
Yandex
Объявления
18.09.2016, 12:03     Передача файла с FTP в папку загрузки Планшета
Ответ Создать тему
Опции темы

Текущее время: 01:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru