文件不存在的原因是因为编码不同,服务器认为请求地址的文件不存在。
解决方法是使用服务可以理解的方式对路径进行编码(我的ftp服务器使用的是gb2312),例如使用java先把中文路径转换为英文再调用wget进行下载:
package c; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class FTPGb2312 { public static void main(String[] args) { BufferedReader read2=null; BufferedReader read1=null; try { System.out.println("[info]:args[0]"+args[0]); args[0]=getPath(args[0]); System.out.println("[info]:args[0]"+args[0]); System.out.println("[info]:args[1]"+args[1]); Runtime r = Runtime.getRuntime(); Process p=r.exec("wget --restrict-file-names=nocontrol ftp://10.231.155.209"+args[0]+" -O "+args[1]); read1 = new BufferedReader(new InputStreamReader(p.getInputStream(),"UTF-8")); String s=null; while((s=read1.readLine())!=null){ System.out.println("[info]:"+s); } read2 = new BufferedReader(new InputStreamReader(p.getErrorStream(),"UTF-8")); while((s=read2.readLine())!=null){ System.out.println("[info]:"+s); } } catch (Exception e) { e.printStackTrace(); }finally{ try{ if(read1!=null){ read1.close(); } }catch(Exception e){} try{ if(read2!=null){ read2.close(); } }catch(Exception e){} } } private static String getPath(String str) throws UnsupportedEncodingException { String[] strs=str.split("/"); List<String> l=new ArrayList<String>(); StringBuffer sb=new StringBuffer(); sb.append("/"); for (int i = 0; i < strs.length; i++) { if(strs[i]!=null&&!strs[i].equals("")){ l.add(URLEncoder.encode(strs[i], "gb2312")); } } for (String s:l){ sb.append("/"); sb.append(s); } return sb.toString(); } }
使用
java -jar c.FTPGb2312 ftp路径 目标文件路径
代替 wget ftp路径 -O 目标文件路径
即可实现正常下载
相关推荐
wget下载地址:https://ftp.gnu.org/gnu/wget/ 在wget的源代码中 src/url.c 这个文件中有wget如何处理文件名的函数url_file_name() url_file_name()在根据url的形式判断该保存为什么样的文件名,并进行了多方面的...
wget 非常稳定 它在带宽很窄的情况下和不稳定网络中有很强的适应性 如果是由于网络的原因下载失败 wget命令会不断的尝试 直到整个文件下载完毕 如果是服务器打断下载过程 它会再次联到服务器上从停止的地方继续下载 ...
下载资源>把wget64.exe放置到C:\Windows\System32路径下>cmd 输入 wget64 下载链接地址
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会...
linux 离线安装wget
Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的...
windows版wget命令 使用帮助wget --help Startup: -V, --version display the version of Wget and exit. -b, --background go to background after startup. -e, --execute=COMMAND execute a `.wgetrc' ...
解决wget无法使用的方法解决wget无法使用的方法解决wget无法使用的方法解决wget无法使用的方法解决wget无法使用的方法解决wget无法使用的方法解决wget无法使用的方法解决wget无法使用的方法
wget是Linux中的一个下载文件的工具, wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。 它用在命令行下。 对于Linux用户是必不可少的工具, 尤其对于网络...
linux命令行模式使用wget下载JDK 版本 jdk-8u60-linux-x64.tar.gz
linux wget 命令用法详解(附实例说明).docx
wget命令rpm安装文件,需要预先安装rpm,才可以配置。
一个linux命令:wget ftp访问命令来下载文件的三种方式 1)wget ftp://userName:password@172.17.5.73:21/xxxx/xxx.txt 2) wget –ftp-user=XXX –ftp-password=xx ftp://172.17.5.73:21/xxx.txt wget:从网络上自动...
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 ...本压缩包是通过上面三个命令下载的文件,主要是为了解决在国内下载慢或者下载失败的问题。
Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先...
windows下wget命令,文件路径添加到系统path里即可在cmd命令下执行。
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会...
解决wget无法使用
强大的linux 下载工具,支持断点续传,整站下载.