文件不存在的原因是因为编码不同,服务器认为请求地址的文件不存在。
解决方法是使用服务可以理解的方式对路径进行编码(我的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 目标文件路径
即可实现正常下载
相关推荐
使用 Linux 命令行下的 FTP 命令可以实现多文件下载和目录下载,而使用 `wget` 命令可以解决 FTP 命令行不支持目录下载的问题。同时,可以使用 Shell 脚本实现 FTP 多文件下载和上传的自动化任务。
wget下载地址:https://ftp.gnu.org/gnu/wget/ 在wget的源代码中 src/url.c 这个文件中有wget如何处理文件名的函数url_file_name() url_file_name()在根据url的形式判断该保存为什么样的文件名,并进行了多方面的...
在Linux系统中,`wget`是一个非常实用的命令行工具,用于从互联网上下载文件,尤其在没有图形化界面或者网络连接不稳定的情况下,其离线安装就显得尤为重要。本篇文章将详细阐述如何在Linux环境下离线安装`wget`,...
Linux wget 命令是 Linux 操作系统中一个功能强大且实用的下载工具,主要用于从网络上下载文件。它支持断点下载、FTP 和 HTTP 下载方式、代理服务器和设置起来方便简单等多种功能。以下是 wget 命令的使用方法和实例...
wget 非常稳定 它在带宽很窄的情况下和不稳定网络中有很强的适应性 如果是由于网络的原因下载失败 wget命令会不断的尝试 直到整个文件下载完毕 如果是服务器打断下载过程 它会再次联到服务器上从停止的地方继续下载 ...
wget是Linux环境中广泛使用的命令行工具,用于从Web服务器下载文件。尽管它主要与Linux相关,但通过在Windows上安装并配置,用户也可以利用wget的强大功能。本篇文章将详细介绍如何在Windows环境下设置和使用wget...
wget是一款强大的网络下载工具,它被广泛应用于Linux系统中,同时也可跨平台运行在其他Unix-like系统上。wget以其可靠性和自动化特性著称,支持HTTP、HTTPS和FTP三种主要的互联网协议,使得用户能够方便地从Web...
`wget`的这些特性使其成为Linux系统中不可或缺的下载工具,无论是单个文件还是整个网站的镜像,甚至是需要断点续传的大文件,`wget`都能高效地完成任务。在处理网络不稳定或带宽有限的环境时,它的稳定性和智能恢复...
SSH 远程管理 Linux 常用命令文件上传下载 一、SSH 基础知识 SSH(Secure Shell)是一种安全的远程登录协议,使用加密技术来保护数据的传输。 SSH 客户端软件可以连接到 SSH 服务器,实现远程管理和文件传输。 ...
1. **下载文件**:在命令提示符中,输入`wget64 [URL]`,其中`[URL]`是你想要下载的文件的完整URL地址。例如,如果你要下载一个名为`example.zip`的文件,URL可能是`http://example.com/example.zip`,则命令将是`...
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会...
其中,wget命令是一个功能强大的下载工具,它允许用户从互联网上下载文件,包括文本、图片、软件包等各种类型的数据。本教程将深入讲解wget命令的作用、基本格式和用法。 ### wget命令的作用 wget命令的主要功能是...
wget 命令是 Linux 下开发的开放源代码软件,由 Hrvoje Niksic 创建,后来被移植到包括 Windows 在内的各个平台上。它有以下功能和特点: 1. 支持断点下传功能:wget 命令可以继续下载已经断点的文件,这对网络不是...
wget 命令报错解决方案 wget 命令是一种常用的下载工具,它可以从指定的 URL 下载文件到本地。但是在使用 wget 命令时,可能会遇到各种报错,例如无法解析主机或者无反应。本文将对 wget 命令报错的解决方案进行...
### 解决wget无法使用的方法 在Linux环境中,`wget`是一个非常重要的工具,它用于从网络上下载文件。然而,在某些情况下,用户可能会遇到`wget`无法使用的问题。本文将详细探讨这一问题,并提供一系列解决方案。 #...
3. **wget/curl**:从互联网上下载文件。 4. **ssh**:用于安全地登录远程计算机。 5. **scp**:安全地在本地和远程之间复制文件。 #### 四、系统管理 1. **df/du**:查看磁盘空间使用情况。 2. **mount/umount...
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命令从清华源下载anaconda的安装脚本,结果返回403错误,无法下载。_-wget-403
在Linux系统中,尤其是服务器环境,我们经常遇到网络不稳定或者没有网络的情况,此时需要离线安装软件就显得尤为重要。本文将详细介绍如何在CentOS虚拟机上离线安装wget及其依赖包。 首先,让我们理解一下wget的...