Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Трабл с FTP кодом


Автор: zone51 20.1.2007, 00:04
Товарищи, подскажите пожалуйста вещь:
Есть код
Код
FileSystemManager manager = VFS.getManager();
FtpFileObject o1 = (FtpFileObject)manager.resolveFile("ftp://root:root@test/test/");
FileObject o2 = manager.resolveFile("file://D:/Dir2");
o2.copyFrom(o1, new AllFileSelector());

Это из org.apache.commons.vfs
Так вот выдает
Цитата

Exception in thread "main" org.apache.commons.net.ftp.parser.ParserInitializationException: Unknown parser type: WIN32 A N
        at org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory.createFileEntryParser(DefaultFTPFileEntryParserFatory.java:118)
        at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2358)
        at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2141)
        at org.apache.commons.vfs.provider.ftp.FTPClientWrapper.listFiles(FTPClientWrapper.java:112)
        at org.apache.commons.vfs.provider.ftp.FtpFileObject.doGetChildren(FtpFileObject.java:123)
        at org.apache.commons.vfs.provider.ftp.FtpFileObject.getChildFile(FtpFileObject.java:103)
        at org.apache.commons.vfs.provider.ftp.FtpFileObject.getInfo(FtpFileObject.java:181)
        at org.apache.commons.vfs.provider.ftp.FtpFileObject.refresh(FtpFileObject.java:208)
        at org.apache.commons.vfs.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:319)
        at org.apache.commons.vfs.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:267)
        at org.apache.commons.vfs.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:88)
        at org.apache.commons.vfs.provider.AbstractOriginatingFileProvider.findFile(AbstractOriginatingFileProvider.java:62)
        at org.apache.commons.vfs.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:641)
        at org.apache.commons.vfs.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:602)
        at org.apache.commons.vfs.impl.DefaultFileSystemManager.resolveFile(DefaultFileSystemManager.java:570)
        at ttt.main(ttt.java:37)


Так вот вопрос как к этому всему прикрутить парсер а еще лучше
FtpFileSystemConfigBuilder

Пол нета обрыл-замучися в доску. Подскажите. Спасибо. smile  smile  smile 

Автор: LSD 20.1.2007, 14:09
Судя по тому что удалось нарыть эта проблема в Jakarta Commons NET, возникает когда FTP сервер работает под Windows.
Что у тебя за FTP-шник?

P.S. С Linux сервером данный код работает. 

Автор: zone51 20.1.2007, 17:27
LSD, 
Спасибо что ответили.
Я еще с универа пользуюсь Small Http Server- для разработки и тестов самое то. И ФТП и там и на производстве реально под Windows. Что делать? Спасибо. 

Автор: zone51 20.1.2007, 23:38
LSD, 
Цитата

P.S. С Linux сервером данный код работает. 

С каким имено сервером? Я поставил vsftpd на убунту 64
Но код
Код

FileSystemManager manager = VFS.getManager();
FtpFileObject o1 = manager.resolveFile("ftp://anonymous@anonymous:127.0.0.1/dd");
FileObject o2 = manager.resolveFile("/home/soft");
o2.copyFrom(o1, new AllFileSelector());

Такой вопрос.
Этот фрагмент кода копирует в папку назначения только содержимое каталога дд.
а как сделать чтобы он копировал все вместе с папкой дд. То есть с начальным каталогом? Спасибо.

Автор: LSD 22.1.2007, 14:50
Цитата(zone51 @  20.1.2007,  23:38 Найти цитируемый пост)
С каким имено сервером?

Не знаю, это не мой сервак. Знаю только что там Debian стоит.

Цитата(zone51 @  20.1.2007,  23:38 Найти цитируемый пост)
Этот фрагмент кода копирует в папку назначения только содержимое каталога дд. а как сделать чтобы он копировал все вместе с папкой дд. То есть с начальным каталогом?

Элементарно, просто надо его предварительно создать:
Код
FileSystemManager manager = VFS.getManager();
FtpFileObject ftpFile = (FtpFileObject) manager.resolveFile("ftp://anonymous@anonymous:127.0.0.1/dd");
FileObject basePath = manager.resolveFile("file://D:/");
FileObject dir = basePath.resolveFile(ftpFile.getName().getBaseName());
if(!dir.exists())
  dir.createFolder();
basePath.copyFrom(ftpFile, new AllFileSelector());

Автор: zone51 22.1.2007, 23:52
2ALL
LSD smile 

Так а все таки, товарищи, как лечится ошибка в первом посте? Я думаю многим актуально будет. Не все же серваки под линем. Спасибо. smile  smile  

Автор: LSD 23.1.2007, 00:19
Почитай http://wiki.apache.org/jakarta-commons/Net/FrequentlyAskedQuestions по Commons NET.

Автор: zone51 23.1.2007, 13:18
Решение вопроса http://forum.vingrad.ru/act-ST/f-108/t-134301/unread-1.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)