読者です 読者をやめる 読者になる 読者になる

Apache Commons VFSでusername,passwordに利用禁止文字を使う方法

String  hostName = "US456564" ; 
String username  = "sftpuser@Location";
String password = "Test!@#$%^&*()[]:;";
String  localFilePath = "home57556";

FileObject remoteFile = manager.resolveFile(					createConnectionString(hostName, username, password, remoteFilePath, fileName),					createDefaultOptions());

Apache Commons VFSを利用する際、usernameやpasswordに@等の文字を使うと以下のようなエラーが出てftpにアクセスすることができない。

Caused by: org.apache.commons.vfs2.FileSystemException: Invalid absolute URI "sftp://sftpuser@Location:***@US456564/home57556".


これは内部的には以下のようにアクセスしているためである。

manager.resolveFile("sftp://sftpuser@Location:Test!@#$%^&*()[]:;@US456564/home57556");


この時は、使用できない文字を%○○のようにエンコードしたものを入力するとアクセスができる。

manager.resolveFile("sftp://sftpuser%40Location:Test!%40%23%24%25%5E%26*%5B%5D%3A%3B@US456564/home57556");