有没有办法在FTP URL中指定绝对路径?

时间:2009-07-21 22:18:50

标签: java url ftp

我正在使用Java URL和URLConnection类使用FTP将文件上传到服务器。我不需要做任何事情,只需上传文件,所以我想避免任何外部库,我担心使用不支持的sun.net.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 个答案:

答案 0 :(得分:7)

我确实发现有一种半标准的方法可以帮助我。

简答:用“%2F”替换前导斜杠

答案很长:根据"A FTP URL Format"文件:

  

例如,网址“ftp://myname@host.dom/%2Fetc/motd”是      通过FTP解析为“host.dom”,以“myname”身份登录      (如果要求输入密码,则提示输入密码),然后执行      “CWD / etc”然后“RETR motd”。

     

这有不同的含义      “ftp://myname@host.dom/etc/motd”哪个“CWD等”然后      “RETR motd”;初始“CWD”可能相对于。执行      “myname”的默认目录。

     

另一方面,      “ftp://myname@host.dom//etc/motd”,将“CWD”带为null      参数,然后是“CWD等”,然后是“RETR motd”。

答案 1 :(得分:1)

我认为最好的办法是使用apache commons FTP组件,并在建立连接后执行'cd'。

你总是可以写一个包装器,这样如果你愿意,可以用上面的格式指定URL。

-ace