Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 18.09.2016, 12:22   #1
alegator74
 
Регистрация: 20.01.2009
Сообщений: 7
Репутация: 10
По умолчанию Передача файла с FTP в папку загрузки Планшета

Добрый день, подскажите пожалуйста, почему программа согласно отладчика затыкается на строке с new FileOutputStream(downloadFile1). Сама задача состоит в том что с ФТП я должен скачать файлы, скопировать их на планшет в папку загрузки прочитать из них информацию после чего удалить с планшета. Скачивание я провожу во втором потоке, т.к. в основном это не получается.
Всего у меня 2 класса
1.
Код:

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.
Код:

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();
        }
 
    }
}

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 18.09.2016 в 12:28.
alegator74 вне форума   Ответить с цитированием
Старый 18.09.2016, 12:25   #2
alegator74
 
Регистрация: 20.01.2009
Сообщений: 7
Репутация: 10
По умолчанию

Получается что я к ФТП подсоединился нормально, перебрал все файлы в искомой папке, нашел с нужным мне расширением, а вот скачать никак не могу.
alegator74 вне форума   Ответить с цитированием
Старый 18.09.2016, 12:34   #3
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 12,383
Репутация: 2542

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Что значит "затыкается"?

Если выпадает Exception и программа завершается, то выведите в catch его сообщение (.getMessage()).
Alex11223 вне форума   Ответить с цитированием
Старый 18.09.2016, 12:44   #4
alegator74
 
Регистрация: 20.01.2009
Сообщений: 7
Репутация: 10
По умолчанию

e.getMessage() выдает
java.io.FileNotFoundException: /storage/sdcard0/download/666.xml: open failed: ENOENT (No such file or directory)
Я понимаю что это говорит что не найден каталог или файл, но я и пытаюсь прописать что хочу его туда создать, причем пробовал указывать и просто каталог /storage/sdcard0/download - тоже ругается хотя в инете я нашел что при использовании внутренней памяти планшета указывается именно этот путь

Последний раз редактировалось alegator74; 18.09.2016 в 12:51.
alegator74 вне форума   Ответить с цитированием
Старый 18.09.2016, 13:06   #5
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 12,383
Репутация: 2542

icq: 512-7шесть5
skype: alexp.frl
По умолчанию

Видимо FileOutputStream почему-то не смог файл создать.
https://docs.oracle.com/javase/7/doc...m(java.io.File)
Цитата:
If the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason then a FileNotFoundException is thrown.
Alex11223 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача файла на FTP сервер(виснет программа) TroubleShooter C++ Builder 2 01.09.2015 14:09
После FTP загрузки файла, меом грузит его одной строкой ВалекFCRK Общие вопросы Delphi 2 17.10.2011 21:06
Ошибка загрузки файла на FTP!!! $T@LKER Работа с сетью в Delphi 7 16.05.2010 18:33
Передача файла на FTP Mitron Работа с сетью в Delphi 18 02.12.2008 15:17
Минимальное приложение для загрузки файла на FTP Gambler Работа с сетью в Delphi 6 29.01.2008 23:58




11:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru