- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章JAVA技术实现上传下载文件到FTP服务器(完整)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
具体详细介绍请看下文:
在使用文件进行交互数据的应用来说,使用FTP服务器是一个很好的选择。本文使用Apache Jakarta Commons Net(commons-net-3.3.jar) 基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作.
关于FileZilla Server服务器的详细搭建配置过程,详情请见 FileZilla Server安装配置教程 。之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到FileZilla Server都没有该问题,朋友们可以放心使用该代码.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
FavFTPUtil.Java
package
com.favccxx.favsoft.util;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.OutputStream;
import
org.apache.commons.net.ftp.FTPClient;
import
org.apache.commons.net.ftp.FTPFile;
import
org.apache.commons.net.ftp.FTPReply;
public
class
FavFTPUtil {
/**
* 上传文件(可供Action/Controller层使用)
* @param hostname FTP服务器地址
* @param port FTP服务器端口号
* @param username FTP登录帐号
* @param password FTP登录密码
* @param pathname FTP服务器保存目录
* @param fileName 上传到FTP服务器后的文件名称
* @param inputStream 输入文件流
* @return
*/
public
static
boolean
uploadFile(String hostname,
int
port, String username, String password, String pathname, String fileName, InputStream inputStream){
boolean
flag =
false
;
FTPClient ftpClient =
new
FTPClient();
ftpClient.setControlEncoding(
"UTF-8"
);
try
{
//连接FTP服务器
ftpClient.connect(hostname, port);
//登录FTP服务器
ftpClient.login(username, password);
//是否成功登录FTP服务器
int
replyCode = ftpClient.getReplyCode();
if
(!FTPReply.isPositiveCompletion(replyCode)){
return
flag;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(pathname);
ftpClient.changeWorkingDirectory(pathname);
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
flag =
true
;
}
catch
(Exception e) {
e.printStackTrace();
}
finally
{
if
(ftpClient.isConnected()){
try
{
ftpClient.disconnect();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
return
flag;
}
/**
* 上传文件(可对文件进行重命名)
* @param hostname FTP服务器地址
* @param port FTP服务器端口号
* @param username FTP登录帐号
* @param password FTP登录密码
* @param pathname FTP服务器保存目录
* @param filename 上传到FTP服务器后的文件名称
* @param originfilename 待上传文件的名称(绝对地址)
* @return
*/
public
static
boolean
uploadFileFromProduction(String hostname,
int
port, String username, String password, String pathname, String filename, String originfilename){
boolean
flag =
false
;
try
{
InputStream inputStream =
new
FileInputStream(
new
File(originfilename));
flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream);
}
catch
(Exception e) {
e.printStackTrace();
}
return
flag;
}
/**
* 上传文件(不可以进行文件的重命名操作)
* @param hostname FTP服务器地址
* @param port FTP服务器端口号
* @param username FTP登录帐号
* @param password FTP登录密码
* @param pathname FTP服务器保存目录
* @param originfilename 待上传文件的名称(绝对地址)
* @return
*/
public
static
boolean
uploadFileFromProduction(String hostname,
int
port, String username, String password, String pathname, String originfilename){
boolean
flag =
false
;
try
{
String fileName =
new
File(originfilename).getName();
InputStream inputStream =
new
FileInputStream(
new
File(originfilename));
flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream);
}
catch
(Exception e) {
e.printStackTrace();
}
return
flag;
}
/**
* 删除文件
* @param hostname FTP服务器地址
* @param port FTP服务器端口号
* @param username FTP登录帐号
* @param password FTP登录密码
* @param pathname FTP服务器保存目录
* @param filename 要删除的文件名称
* @return
*/
public
static
boolean
deleteFile(String hostname,
int
port, String username, String password, String pathname, String filename){
boolean
flag =
false
;
FTPClient ftpClient =
new
FTPClient();
try
{
//连接FTP服务器
ftpClient.connect(hostname, port);
//登录FTP服务器
ftpClient.login(username, password);
//验证FTP服务器是否登录成功
int
replyCode = ftpClient.getReplyCode();
if
(!FTPReply.isPositiveCompletion(replyCode)){
return
flag;
}
//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
ftpClient.dele(filename);
ftpClient.logout();
flag =
true
;
}
catch
(Exception e) {
e.printStackTrace();
}
finally
{
if
(ftpClient.isConnected()){
try
{
ftpClient.logout();
}
catch
(IOException e) {
}
}
}
return
flag;
}
/**
* 下载文件
* @param hostname FTP服务器地址
* @param port FTP服务器端口号
* @param username FTP登录帐号
* @param password FTP登录密码
* @param pathname FTP服务器文件目录
* @param filename 文件名称
* @param localpath 下载后的文件路径
* @return
*/
public
static
boolean
downloadFile(String hostname,
int
port, String username, String password, String pathname, String filename, String localpath){
boolean
flag =
false
;
FTPClient ftpClient =
new
FTPClient();
try
{
//连接FTP服务器
ftpClient.connect(hostname, port);
//登录FTP服务器
ftpClient.login(username, password);
//验证FTP服务器是否登录成功
int
replyCode = ftpClient.getReplyCode();
if
(!FTPReply.isPositiveCompletion(replyCode)){
return
flag;
}
//切换FTP目录
ftpClient.changeWorkingDirectory(pathname);
FTPFile[] ftpFiles = ftpClient.listFiles();
for
(FTPFile file : ftpFiles){
if
(filename.equalsIgnoreCase(file.getName())){
File localFile =
new
File(localpath +
"/"
+ file.getName());
OutputStream os =
new
FileOutputStream(localFile);
ftpClient.retrieveFile(file.getName(), os);
os.close();
}
}
ftpClient.logout();
flag =
true
;
}
catch
(Exception e) {
e.printStackTrace();
}
finally
{
if
(ftpClient.isConnected()){
try
{
ftpClient.logout();
}
catch
(IOException e) {
}
}
}
return
flag;
}
}
FavFTPUtilTest.java
package
com.favccxx.favsoft.util;
import
junit.framework.TestCase;
public
class
FavFTPTest
extends
TestCase {
public
void
testFavFTPUtil(){
String hostname =
"127.0.0.1"
;
int
port =
21
;
String username =
"business"
;
String password =
"business"
;
String pathname =
"business/ebook"
;
String filename =
"big.rar"
;
String originfilename =
"C:\\Users\\Downloads\\Downloads.rar"
;
FavFTPUtil.uploadFileFromProduction(hostname, port, username, password, pathname, filename, originfilename);
// String localpath = "D:/";
// FavFTPUtil.downloadFile(hostname, port, username, password, pathname, filename, localpath);
}
}
|
以上就是JAVA通过FTP上传下载文件的完整代码,希望对大家有所帮助.
最后此篇关于JAVA技术实现上传下载文件到FTP服务器(完整)的文章就讲到这里了,如果你想了解更多关于JAVA技术实现上传下载文件到FTP服务器(完整)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
根据 FTP 协议(protocol)(rfc 959),当 ftp 客户端连接到 ftp 服务器时,应该在 ftp 客户端和 ftp 服务器之间建立控制连接。而当ftp客户端发送{LIST, R
是否可以使用 FTP 命令重命名 FTP 服务器上的文件夹? 我知道有一个用于文件重命名的 Rename 命令,但是我可以将它用于文件夹名称吗? 最佳答案 AFAIK,相同的命令( RNFR/RNTO
我有一个 ftp://host/path URL,我想下载文件并在 Erlang 中连接丢失时继续下载。 使用 ftp 开始下载非常简单模块,但如何恢复它? 最佳答案 是的..就像 Peer 提到的.
我一直在阅读 FTP 规范并使用 Wireshark 来捕获我的 FTP 客户端发送/接收的数据包,并有一些关于它们的问题。 首先是来自我的 FTP 服务器的“连接问候语”(如 FTP RFC 所称)
我有一个 ColdFusion 应用程序,用于在开发和生产服务器之间传输文件。实际发送文件的代码如下: ftp = new Ftp(); ftp.setUsername(username); ftp.
我正在尝试连接到允许匿名访问的 FTP 服务器,但我不知道如何指定执行此操作所需的适当用户名/密码。 我尝试过使用匿名/匿名作为用户/通行证,但没有成功,以及空字符串和两者的各种组合等。 这一定是我所
ftp rstatus $remotefile 在Solaris 上出现“?无效命令”错误。我发现,与 HP-UX 不同,Solaris 10 上没有像 rstatus 这样的 ftp 命令。基本上在
我是 Spring 的新手,我目前正在研究 spring 与 ftp 支持的集成。 我从本地目录传输到服务器 (filZilla)。 我从服务器下载了文件,没问题。 但我想知道如何将文件从 FTP 服
我想通过加密连接 FTP,需要使用 PHP 代码通过 TLS 隐式 FTP。 我已经尝试使用普通 FTP 进行加密,它可以工作,但加密需要通过 TLS 的隐式 FTP 不起作用。 最佳答案 尝试使用下
我已经成功使用 LuaSocket 的 TCP 工具,但我在使用它的 FTP 模块时遇到了问题。尝试检索(小)文件时,我总是超时。我可以在被动模式下使用 Firefox 或 ftp 下载文件(在 Ub
我尝试使用 putty 使用 FTP 详细信息主机名、用户名和密码登录到服务器。但是当我输入密码时它显示拒绝访问。 对于我的另一个网站,我输入了我的主机名并单击在腻子中打开,它显示“网络错误:连接超时
只是我,还是 FTP 看起来有点过时?它看起来很慢而且效率低下,而且它已经有 30 多年的历史了,并不是所有的旧东西都是坏的 :) 有哪些协议(protocol)可能成为 FTP 的继任者? 我用过一
我有一个有点相关但不同的问题 here . 我有一个批处理脚本( *.bat 文件),例如: @ftp -i -s:"%~f0"&GOTO:EOF open ftp.myhost.com myuser
我正在使用 IBM Mainframe TSO 从数据集中查看文件。最近有人告诉我每天开始将最新一代的数据集通过 FTP 传输到我桌面上的文件夹中。问题是我的 FTP 脚本只允许我用我输入的确切名称
我正在尝试使用 atom 包“Remote-FTP”和私钥连接到我的服务器。 我在我的服务器上设置了 SSH key ,并且可以使用腻子成功连接。 私钥保存在我的项目文件夹中,我有一个现有的 .ftp
我的 ftp 文件夹中有一组文件。我只能访问 ftp 模式。我想将那些扩展名为 .txt 的文件重命名为 .done 例如: 1.txt, 2.txt, 3.txt 到 1.done, 2.done,
lcd 更改本地目录。 ls 列出远程目录上的文件。 我想要的是lls,列出本地目录上的文件。 这可能吗? 我知道我总是可以打开另一个终端来执行此操作,但我很懒! 最佳答案 是的: !dir ! 告诉
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 社区去年审查
我的 FTP 测试服务器有问题。我已经安装并配置了 FileZilla 服务器,它正在监听端口 21 上的控制连接,然后它可以在 50100 和 51100 之间的端口上提供被动模式数据连接。 我正在
我正在运行 Filezilla Server 0.9.45 beta 来远程管理我的服务器。设置完成后,我测试使用 IP 127.0.0.1 连接到它,并且工作成功。但是,为了远程连接到服务器,我将端
我是一名优秀的程序员,十分优秀!