import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import sun.net.*;
import sun.net.ftp.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("10.163.7.15", "cxl", "1", "info2");
/** 上传文件到 info2 文件夹下 */
System.out.println("filesize:"+ftp.upload("f:/download/Install.exe")+"字节");
/** 取得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服务器。 #### FTP协议的特点与操作模式 FTP协议具有以下特点: 1. **数据传输模式**:FTP支持ASCII和Binary两种数据传输模式。ASCII模式适用于文本文件的...
Java解析FTP服务器文本文件是指使用Java语言连接FTP服务器,上传、下载、递归目录遍历等基本操作的集合。在这个过程中,我们需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar、antlr.jar、commons-...
标题中的“用Java实现FTP服务器”表明我们要讨论的是如何使用Java编程语言来构建一个FTP(File Transfer Protocol)服务器。FTP是一种用于在互联网上传输文件的标准协议。Java由于其跨平台性和丰富的类库,成为了...
在Java编程中,FTP(File ...总之,通过Java调用FTP服务进行文件上传和下载是一个常见的任务,可以通过Apache Commons Net等库轻松实现。理解这些基本步骤和概念将有助于你在实际项目中更高效地管理远程文件系统。
以上就是使用Java读取FTP服务器文件的基本流程。在实际开发中,你可能还需要处理更多细节,例如重试机制、异常处理、文件上传、文件删除等。了解这些知识点后,你就能在Web服务器和Linux环境下实现与FTP服务器的交互...
一个简单的demo,适合初学者,java语言使用第三方API,进程FTP上传下载的demo
Java实现FTP服务器端配套程序是一种将Java编程语言用于构建文件传输协议(FTP)服务端的应用。FTP是一种在互联网上广泛使用的标准协议,用于在客户端和服务器之间上传、下载文件。在Java中,我们可以利用标准库中的`...
### Java从FTP服务器下载文件知识点解析 在当前数字化转型的大背景下,文件传输协议(File Transfer Protocol,简称FTP)作为互联网上最早的文件传输服务之一,在数据交换、文件共享等方面仍然发挥着重要作用。对于...
### 使用Java实现FTP服务器 #### 一、简介 在互联网技术的发展过程中,文件传输协议(File Transfer Protocol,简称FTP)是一种用于在网络上进行文件传输的标准服务和协议。它为用户提供了一种简单有效的方式来...
Java定时从FTP服务器更新相关文件是一项常见的任务,特别是在自动化数据同步和备份的场景中。这里主要涉及的技术点包括FTP协议、Java编程以及文件系统操作。本文将深入探讨这些知识点,并提供一个基于`ftp4j`库的...
在这个场景中,我们讨论的是一个使用Java编程语言实现的FTP服务器程序。Java作为一种通用且跨平台的语言,非常适合开发这样的服务端应用。 FTP服务器的核心功能是管理用户连接、处理文件上传和下载请求。Java中的...
Java 实现FTP服务器是一项常见的编程任务,这通常涉及到网络编程和文件传输协议的理解。FTP(File Transfer Protocol)是一种用于在互联网上传输文件的标准协议。在Java中实现FTP服务器,我们可以利用Java的内置类库...
Java 搭建 FTP 服务器涉及的关键知识点包括 FTP 协议、TCP 连接、FTP 响应码、多线程以及 Java 网络编程。以下是对这些知识点的详细说明: 1. FTP 协议:FTP(File Transfer Protocol)是一种用于在互联网上进行...
本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载以及创建多级文件夹的功能,并提供一个可以直接使用的demo。 首先,Java中的FTP操作通常依赖于`org.apache.commons.net.ftp`库,这个库提供了FTPClient...
- SSL/TLS加密:为了保护数据传输的安全,现代FTP服务器通常支持FTPS(FTP over TLS/SSL),使用Java的JSSE(Java Secure Socket Extension)实现。 - 访问控制:限制用户权限,只允许访问指定的目录,防止非法...
### 获取FTP服务器文件大小的知识点解析 在进行网络文件传输时,经常需要了解远程文件的大小,以便于更好地控制文件的下载进度或者进行其他相关的管理操作。本文将围绕“获取FTP服务器文件的大小”这一主题展开,...
Java作为一门跨平台的编程语言,提供了丰富的库和API来实现网络编程,包括创建FTP服务器。在本项目中,我们将利用Java的Socket网络编程机制来构建一个简单的FTP服务器。 Socket编程是基于TCP/IP协议的,它为两台...
在`Java FTPServer.doc`文档中,可能会详细介绍如何安装、配置和使用这个Java FTP服务器,包括命令行参数、配置文件格式、API用法示例,以及常见问题解答等内容。通过阅读这份文档,开发者和系统管理员可以更好地...
在Java中实现FTP服务器,可以使用多种库,例如Apache Commons Net。这个库提供了FTPServer类,可以用来创建和配置服务器实例。下面是一些基本步骤: 1. 引入Apache Commons Net库:首先,在项目中添加该库的依赖,...