当前位置:编程学习 > JAVA >>

程序中用ftp协议方式取一个路径中有中文的文件的问题

最近写一段程序,要求远程读取excel表格数据,文件的路劲为:
ftp://hi:hi@192.168.1.168/个人文件夹/王平/异地数据/整理好的/aa.xls(暂且称为 url1)
在我本地的资源管理其中直接访问是可以的,而且连接之后地址栏的内容变化为
ftp://hi:hi@192.168.1.168/%B8%F6%C8%CB%CE%C4%BC%FE%BC%D0/%CD%F5%C6%BD/%D2%EC%B5%D8%CA%FD%BE%DD/%D5%FB%C0%ED%BA%C3%B5%C4/aa.xls(暂且称为 url2);
我在浏览器中输入url1是不能访问的(ie和火狐都试了),输入url2是都可以访问的
以上是现象;
现在不用资源管理器或浏览器访问,用程序访问,但是两个url地址都不行,代码如下:
URL url = new URL(url1 or url2);
URLConnection urlconn = url.openConnection();
InputStream in = urlconn.getInputStream();//此处报错
如果用url1则报
java.io.FileNotFoundException: 个人文件夹/王平/异地数据/整理好的/aa.xls
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:441)
at com.cbitech.csims.task.FetchExcelDateFromFTPMain.main(FetchExcelDateFromFTPMain.java:299)

如果用url2则报 
java.lang.IllegalArgumentException
at sun.net.www.ParseUtil.decode(ParseUtil.java:185)
at sun.net.www.protocol.ftp.FtpURLConnection.cd(FtpURLConnection.java:338)
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:381)
at com.cbitech.csims.task.FetchExcelDateFromFTPMain.main(FetchExcelDateFromFTPMain.java:299)

后来找了一些资料,以为可能是要对url1进行ULR编码,但是用URLEncoder.encode(url1, 编码方式)试了所有的编码方式之后还是不行,报的错还是以上两种错……

小弟实在无能为力了,不知哪位大虾指点一二,不胜感激了 --------------------编程问答-------------------- 你这个问题现在解决了吗?我也遇到了这个问题。 --------------------编程问答-------------------- 这个问题很头疼,后来不用这个方法下了,直接用ftpClient --------------------编程问答-------------------- 推荐你用 http://commons.apache.org/proper/commons-net/ 。
里面含有FTP的各种操作。
可以put推送数据,可以get回拉数据,changeWorkDirectory修改当前工作路径。
--------------------编程问答-------------------- encode之后还要decode

URLEncoder
URLDecoder
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,