import java.util.ArrayList;
import java.util.List;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class FtpUtil {
FtpClient ftpClient;
/**
* connectServer 连接ftp服务器
*
* @throws java.io.IOException
* @param path
* 文件夹,空代表根目录
* @param password
* 密码
* @param user
* 登陆用户
* @param server
* 服务器地址
*/
public void connectServer(String server, String user, String password, String path) throws IOException {
// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
// path是ftp服务下主目录的子目录
if (path.length() != 0)
ftpClient.cd(path);
// 用2进制上传、下载
ftpClient.binary();
}
/**
* upload 上传文件
*
* @throws java.lang.Exception
* @return -1 文件不存在 -2 文件内容为空 >0 成功上传,返回文件的大小
* @param newname
* 上传后的新文件名
* @param filename
* 上传的文件
*/
public long upload(String filename, String newname) throws Exception {
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = new java.io.File(filename);
if (!file_in.exists())
return -1;
if (file_in.length() == 0)
return -2;
os = ftpClient.put(newname);
result = file_in.length();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return result;
}
/**
* upload
*
* @throws java.lang.Exception
* @return
* @param filename
*/
public long upload(String filename) throws Exception {
String newname = "";
if (filename.indexOf("/") > -1) {
newname = filename.substring(filename.lastIndexOf("/") + 1);
} else {
newname = filename;
}
return upload(filename, newname);
}
/**
* download 从ftp下载文件到本地
*
* @throws java.lang.Exception
* @return
* @param newfilename
* 本地生成的文件名
* @param filename
* 服务器上的文件名
*/
public long download(String filename, String newfilename) throws Exception {
long result = 0;
TelnetInputStream is = null;
FileOutputStream os = null;
try {
is = ftpClient.get(filename);
java.io.File outfile = new java.io.File(newfilename);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
result = result + c;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return result;
}
/**
* 取得某个目录下的所有文件列表
*
*/
public List getFileList(String path) {
List list = new ArrayList();
try {
DataInputStream dis = new DataInputStream(ftpClient.nameList(path));
String filename = "";
while ((filename = dis.readLine()) != null) {
list.add(filename);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* closeServer 断开与ftp服务器的链接
*
* @throws java.io.IOException
*/
public void closeServer() throws IOException {
try {
if (ftpClient != null) {
ftpClient.closeServer();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
FtpUtil ftp = new FtpUtil();
try {
// 连接ftp服务器
ftp.connectServer("127.0.0.1", "test", "123", "");
/** 上传文件到 info2 文件夹下 */
System.out.println("filesize:" + ftp.upload("D:/log/login.log") + "字节");
/** 取得info2文件夹下的所有文件列表,并下载到 E盘下 */
List list = ftp.getFileList(".");
for (int i = 0; i < list.size(); i++) {
String filename = (String) list.get(i);
System.out.println(filename);
ftp.download(filename, "E:/" + filename);
}
} catch (Exception e) {
// /
} finally {
ftp.closeServer();
}
}
}
分享到:
相关推荐
Java FTP上传下载是Java编程语言中用于实现文件传输协议(FTP)的一种常见应用。FTP允许用户在客户端和服务器之间交换文件,这对于数据共享、备份和远程协作非常有用。以下是一些关于Java FTP上传下载的关键知识点:...
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
总结,Java FTP上传下载及断点续传是Java开发中常见且实用的技术,通过Apache Commons Net库可以方便地实现这些功能。在实际应用中,需要考虑网络环境、文件权限、错误处理等因素,以确保文件传输的稳定性和可靠性。
Java FTP上传下载是Java开发中常见的一项任务,它涉及到网络通信和文件操作。FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,而Java提供了一系列API来支持FTP操作,如`java.net.FTPClient...
在Java编程语言中,FTP(File Transfer Protocol)文件上传和下载是常见的网络操作,用于在本地计算机和远程服务器之间交换文件。以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。...
以下是一个使用Apache Commons Net库进行FTP上传和下载的简单示例: 1. **FTP连接**: - 导入必要的库:`import org.apache.commons.net.ftp.FTP;` 和 `import org.apache.commons.net.ftp.FTPClient;` - 创建`...
java 连接linux系统上的ftp服务器,通过java代码上传,下载文件 通过链接ftp,获取文件列表,上传。下载、删除文件功能实现
以上代码示例展示了Java FTP上传和下载的基本操作。在实际应用中,可能需要处理异常、关闭流、重试机制、错误处理等更多细节。`FtpUtils`可能是包含这些功能的工具类,它可以帮助简化FTP操作,提高代码复用性。
这个"Java FTP上传下载简单例子"的资源可能包含了两个核心方法,分别用于实现FTP的上传和下载功能。下面将详细讲解Java中如何实现FTP的上传与下载操作。 FTP上传通常涉及到以下几个步骤: 1. **建立连接**:首先,...
以上就是使用Java进行FTP上传和下载的基本步骤,结合Apache Commons Net库和WinFtp Server2.0.1,你可以创建一个完整的FTP客户端程序进行实践。在实际应用中,你可能还需要处理各种异常情况,如网络中断、文件权限...
在提供的`FTPTest.java`文件中,应该包含了具体的FTP上传或下载的示例代码,可以通过查看这个源码了解如何在Java中实现FTP操作。通过分析这个文件,你可以学习如何组织代码,如何处理异常,以及如何在实际项目中使用...
Java FTP上传下载是Java编程中一个常见的网络操作,主要用于在本地计算机和远程FTP服务器之间交换文件。FTP(File Transfer Protocol)是一种应用层协议,用于在Internet上可靠地传输文件。在Java中,我们可以使用`...
以下将详细讲解Java FTP上传下载文件的相关知识点。 首先,Java中进行FTP操作主要依赖于`java.net`和`java.io`这两个核心包,以及`org.apache.commons.net.ftp`这个Apache Commons Net库。Apache Commons Net库提供...
因此选择了FTP上传,在网上搜索了很多例子后并经自己对比整理后决定采用apache包中的FTP实现上传下载,在使用过程需要注意的是对中文名进行字符转码,FTP服务器我选用的是Serve-U,这个工具以前用过,比较稳定。...
使用Apache commons net组件实现ftp上传与下载功能
本文将深入探讨如何使用Java实现FTP文件的上传和下载操作。 FTP协议是Internet上的一个标准协议,用于在客户端和服务器之间进行文件传输。在Java中,我们可以使用`java.net`和`java.io`库中的类来实现FTP功能,或者...
在IT行业中,Java FTP上传、下载以及RAR压缩与解压是常见的操作,这些功能在文件管理系统、数据迁移、备份恢复等场景中广泛应用。本篇将详细介绍如何使用Java实现FTP(File Transfer Protocol)传输以及RAR文件的...
基于java程序的上传下载,不是jsp程序
以下是一个简单的FTP上传文件的Java代码示例: ```java import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class FtpUploader { public static void uploadFile...
在FTP上传下载任务中,可能会涉及到XML文件的处理。Java提供了DOM、SAX和StAX三种主要的XML解析方式。 1. DOM(Document Object Model)解析:一次性加载整个XML文档到内存,形成一棵树形结构,方便遍历和查询。...