解决FTP的URL访问不能有中文名称的问题,报java.lang.IllegalArgumentException
最近一个项目要用到FTP做上传下载,我访问ftp的url中有中文名称,结果每次都报如下错:
1 Exception in thread "main" java.lang.IllegalArgumentException
2 at sun.net.www.ParseUtil.decode(Unknown Source)
3 at sun.net.www.protocol.ftp.FtpURLConnection.decodePath(Unknown Source)
4 at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(Unknown Source)
5 at URLConnectionDownloader.download(URLConnectionDownloader.java:33)
6 at URLConnectionDownloader.main(URLConnectionDownloader.java:15)
本来可以用apache的FtpClient解决这个问题,但是我不太想用那种方式,我想省点步骤。所以坚持用
URL url = new URL("ftp://xxxx:1234@192.168.1.101:21/测试/测试.jpg");这种方式,网上搜了一大堆资料,基本都是说编码问题的。用了java.net.xxx自带转码的工具也没用,尝试了各种iso8859-1、GBK、UTF-8编码,依然无效。
最后发现windows的ftp服务器,是用gbk来处理的,linux的是utf-8,原来只需要在访问ftp前设置一下系统编码就OK了,下面放代码:
System.setProperty("file.encoding", "GBK");
URL url = new URL("ftp://xxxx:1234@192.168.1.101:21/测试/测试.jpg");
is =url.openConnection().getInputStream();
output = response.getOutputStream();
byte[] buffer = new byte[4096];
int count = 0;
while ((count = is.read(buffer)) > 0) {
output.write(buffer, 0, count);
}
output.flush();
response.flushBuffer();
is.close();
到此就算OK了,用了这个就不要再去给你的路径转码了,不然会导致读取失败!
2015-04-08 PS:时隔三年回来看这篇博客,感觉自己简直是个逗比,直接把FTP的用户和密码暴漏给了前台,如果我现在写的话,会经过服务器中转后才展示出来。当年刚入行,年轻啊。。。。
解决FTP的URL访问不能有中文名称的问题,报java.lang.IllegalArgumentException的更多相关文章
- jdk1.8+SpringAOP注解报java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut select错误的不知原因的解决办法[仅供参考]
先说办法:如果Aspectweaver-1.*.*jar这三个包版本比较低, 比如1.5.0这一层次的,可以找版本高一点的包替换低版本的包,问题可以得到解决 jar包的下载地址:https://mvn ...
- Android用Intent来启动Service报“java.lang.IllegalArgumentException: Service Intent must be explicit”错误的解决方法
今天没事来写个播放器,照搬书上的原句,其中一句 //用于启动和停止service的Intent final Intent it = new Intent("android.mu.action ...
- tomcat使用cookies缓存的时候中文报错解决办法 java.lang.IllegalArgumentException: Control character in cookie value or attribute.
报错出现 java.lang.IllegalArgumentException: Control character in cookie value or attribute. at org.apac ...
- Cookie存储中文报错:java.lang.IllegalArgumentException: Control character in cookie value or attribute.(转)
项目中做自动登录和保存密码时,Cookie报错Java.lang.IllegalArgumentException,上google查了下 在http://hi.baidu.com/xtxycy/blo ...
- java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie解决方法
当项目中使用单点登录功能时,通常会使用cookie进行信息的保存,这样就可以在多个子域名上存取用户信息. 比如有三个domain分别为test.com,cml.test.com,b.test.com这 ...
- IDEA报错: Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.datasource.url' in value "${spring.datasource.url}"
运行审核流模块: 在ActivitiServiceApplication模块日志报错: Error starting ApplicationContext. To display the auto-c ...
- java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation 解决办法
MyEclipse 启动tomcat 报错: java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: ...
- java.lang.IllegalArgumentException: Illegal character in query at index ...解决办法
今天在写智能机器人问答实现的时候遇到了一个问题,就是我发送消息不能输入空格 给我报了一个错误java.lang.IllegalArgumentException: Illegal character ...
- JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
前些天,在进行分布式参数化测试的时候,出现了如题所示的错误报错信息.此文,针对此做一个简略的重现及分析说明. JMX脚本线程组参数配置如下所示: 参数文件路径配置如下所示: 执行JMX脚本后,服务器对 ...
随机推荐
- Java 23种设计模式 (通俗易懂解释收集整理)
(补充中...) P02 抽象工程模式 P14 TemplateMethod 模板方法模式 讲清楚了为什么叫做模板方法 http://www.cnblogs.com/java-my-life/arc ...
- 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码
Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...
- java线程与缓存
如果在你的服务中用了一些第三方的服务,最好使用缓存配合线程的方式去访问第三方的服务,以免引发线程安全问题,因为第三方的服务你不知道人家对于多线程是如何处理的,所以我们要在自己的程序中做一些线程安全的处 ...
- SoapUI 设置 request data with json body
--背景 使用WCF定义REST风格的WebService,如下: [ServiceContract] public interface INISTService { [Op ...
- struts2 拦截器
拦截器:对Action的访问.可以拦截到Action中某个方法.与过滤器不同,过滤器过滤的是请求.过滤JSP.html.但是拦截器不能拦截jsp.html的访问. Struts2 拦截器在访问某个 A ...
- assign more memory to Gradle
Please assign more memory to Gradle in the project's gradle.properties file.For example, the followi ...
- 【目录】linux
linux 学习1 学习2 学习3 学习4 学习5 学习6 学习7 jdk安装 配置SSH免密码登陆 linux下运行java程序
- .NET LINQ 元素操作
元素操作 元素操作从一个序列返回单个特定元素. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 ElementAt 返回集合中指定索引处的元素. ...
- 51nod1130(斯特林近似)
题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1130 题意: 中文题诶~ 思路: 直接斯特林公式就好了~ ...
- hdu 1358 Period
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358 思路:Next数组的用法,在第i个位置上如果有i%(i-Next[i])==0的话最小循环节就是 ...