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");