Любой способ указать абсолютные пути в FTP-адресах?

Я использую классы Java URL и URLConnection для загрузки файла на сервер с помощью FTP. Мне не нужно ничего делать, кроме как просто загрузить файл, поэтому я хотел бы избежать каких-либо внешних библиотек, и я опасаюсь использовать не поддерживаемое sun.сеть.класс ftp.

есть ли способ использовать абсолютные пути в строке подключения FTP? Я хотел бы поместить свои файлы в что-то вроде "/ftptransfers/..."но путь FTP относительно домашнего каталога пользователя.

образец загружать код:

URL url = new URL("ftp://username:password@host/file.txt");
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
OutputStream out = uc.getOutputStream() ;
out.write("THIS DATA WILL BE WRITTEN TO FILE".getBytes());
out.close();

2 ответов


Я действительно узнал, что есть полу-стандартный способ сделать это, который сработал для меня.

короткий ответ: заменить символ " / " с "%2е"

длинный ответ: за "формат URL FTP" документ:

например, URL"ftp://myname@host.dom/%2Fetc / motd" это интерпретируется FTP-ing в " host.dom", вход в систему как " myname" (запрос пароля, если он запрашивается), а затем проведение "CWD / etc", а затем"RETR motd".

Это имеет другое значение от "ftp://myname@host.dom/etc / motd "что бы " CWD etc", а затем "RETR motd"; первоначальное "CWD" может быть выполнено относительно каталог по умолчанию для "myname".

с другой стороны, "ftp://myname@host.dom/ / etc / motd", будет " CWD " с нулевым значением аргумент, затем "CWD etc", а затем"RETR motd".


Я думаю, что лучше всего использовать FTP-компонент apache commons и сделать " cd " после подключения.

вы всегда можете написать обертку, чтобы URL-адрес можно было указать в формате выше, если хотите.

-ace