求高手解答URLConnection实现远程FTP文件下载,文件名为中文名(如:测试.jpg)时,报错求解?
URLConnection实现远程FTP文件下载,文件名为中文名(如:测试.jpg)时,报错求解.说明下载英文名文件时是正常的,迄今为止没有发现正确的解决方案.求高手解答
Exception in thread "main" java.util.concurrent.ExecutionException: java.io.FileNotFoundException: tmp/ftp/SDdisk/dcim/100media/无标题.bmp
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at Downloader.main(Downloader.java:200)
Caused by: java.io.FileNotFoundException: tmp/ftp/SDdisk/dcim/100media/无标题.bmp
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(Unknown Source)
at Downloader.call(Downloader.java:73)
at Downloader.call(Downloader.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
代码如下:
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
/**
* 使用URLConnection下载文件或图片并保存到本地。
*
* @author
*/
public class URLConnectionDownloader {
public static void main(String[] args) throws Exception {
download("ftp://root:root@192.168.201.217:21/tmp/ftp/SDdisk/dcim/100media/无标题.bmp;type=i", "无标题.bmp");
}
/**
* 下载文件到本地
*
* @param urlString
* 被下载的文件地址
* @param filename
* 本地文件名
* @throws Exception
* 各种异常
*/
public static void download(String urlString, String filename) throws Exception {
// 构造URL
URL url = new URL(urlString);
// 打开连接
URLConnection con = url.openConnection();
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流
OutputStream os = new FileOutputStream(filename);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
}
}