Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Список файлов и каталогов на ftp / 3 сообщений из 3, страница 1 из 1
07.06.2017, 18:08
    #39468097
LittleLoya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список файлов и каталогов на ftp
Всем доброго времени суток. Пытаюсь получить список файлов и каталогов на ftp, но почему-то ничего не выводит, хотя на ftp этот каталог есть и он не пустой. Адрес, логин и пароль правильные, подключение происходит, никаких ошибок не выдаёт, но массив в итоге почему-то пустой. Подскажите, пожалуйста, где может быть ошибка? Как ещё можно попробовать получить список файлов? Вот код:
Код: 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.
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
 
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
 
public class FTPDirDemo {
 
    public static void main(String[] args) {
        String server = args[0];
        int port = 21;
        String user = args[1];
        String pass = args[2];
 
        FTPClient ftpClient = new FTPClient();
 
        try {
 
            ftpClient.connect(server, port);
            showServerReply(ftpClient);
 
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                System.out.println("Connect failed");
                return;
            }
 
            boolean success = ftpClient.login(user, pass);
            showServerReply(ftpClient);
 
            if (!success) {
                System.out.println("Could not login to the server");
                return;
            }
 
            // Lists files and directories
            FTPFile[] files1 = ftpClient.listFiles("/catalog");
            printFileDetails(files1);
 
            // uses simpler methods
            String[] files2 = ftpClient.listNames();
            printNames(files2);
 
 
        } catch (IOException ex) {
            System.out.println("Oops! Something wrong happened");
        } finally {
            // logs out and disconnects from server
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
            }
        }
    }
 
    private static void printFileDetails(FTPFile[] files) {
        DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (FTPFile file : files) {
            String details = file.getName();
            if (file.isDirectory()) {
                details = "[" + details + "]";
            }
            details += "\t\t" + file.getSize();
            details += "\t\t" + dateFormater.format(file.getTimestamp().getTime());
 
            System.out.println(details);
        }
    }
 
    private static void printNames(String files[]) {
        if (files != null && files.length > 0) {
            for (String aFile: files) {
                System.out.println(aFile);
            }
        }
    }
 
    private static void showServerReply(FTPClient ftpClient) {
        String[] replies = ftpClient.getReplyStrings();
        if (replies != null && replies.length > 0) {
            for (String aReply : replies) {
                System.out.println("SERVER: " + aReply);
            }
        }
    }

}
...
Рейтинг: 0 / 0
07.06.2017, 18:22
    #39468105
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список файлов и каталогов на ftp
Во-первых
Код: java
1.
System.out.println("Oops! Something wrong happened");

таки стоит заменить на
Код: java
1.
e.printStackTrace();



Во-вторых, добавьте логирование FTP комманд:
https://wiki.apache.org/commons/Net/FrequentlyAskedQuestions
...
Рейтинг: 0 / 0
08.06.2017, 11:18
    #39468421
LittleLoya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список файлов и каталогов на ftp
Blazkowicz,

огромнейшее спасибище!!! Всё получилось.

Может кому пригодится, добавила:
Код: java
1.
ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));


получила
500 Illegal PORT command
узнала про существование Active and Passive Modes in FTP =)
добавила:
Код: java
1.
ftpClient.enterLocalPassiveMode();


И всё заработало!!!

Спасибо большое ещё раз!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Список файлов и каталогов на ftp / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]