`
liaohanfeng
  • 浏览: 3987 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ftp 连接

    博客分类:
  • ftp
阅读更多
package com.cmbstc.component.mgr.myLibrary.util;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

public class FtpServerTest {

/**
* ftp用户名
*/
String user = "Administrator";
/**
* 密码
*/
String password = "xiaofeng";
/**
* ip地址
*/
String server = "192.168.1.112";

// String user = "darviftp";
// String password = "darvi123";
// String server = "192.168.1.113";

public static void main(String[] args) {
FtpServerTest test = new FtpServerTest();
try {
// System.out.println(new FtpHandleUtil()
// .deleteFile("/results/20150321153100_20150321.xml"));
// 删除文档文件
// test.listDelete("/doc/");

// 上传文档文件
test.listUpload("G://showTime/xml//doc", "//doc//");

// // 上传xml通知文件文件
// long str = test.upload("G://showTime/xml//20150321.xml",
// "/xml/20150321.xml");
// System.out.println("上传:" + (str > 0 ? true : false));
//
// ftp下载文件
// long strs = test.download("/xml/20150321.xml",
// "G://showTime/xml//sss.xml");

// System.out.println("下载:" + (strs > 0 ? true : false));

// 时间设置 yyyyMMddhhmmss 2015(年)03月21日10时29分43秒
// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
// System.out.println(sdf.format(new Date()));
// // 根据当前Ftp的doc现有的文档 创建通知xml
// FtpModel model = new FtpModel();
// // // 设置上传的用户名
// model.setUserName("CMBSTC");
// // 设置文库创建时间
// model.setUploadDate("2015-03-21");
// test.createXMl("G:/showTime/xml/doc/", "G:/showTime/xml/"
// + sdf.format(new Date()) + ".xml", model);

// 查看ftp 的doc文档 跟本地文档
List<String> list = test.getFileNameListFTP("/doc/");
for (String s : list) {
System.out.println(s);
}
// System.out.println();
// File file = new File("G:showTime/xml/doc");
// for (int i = 0; i <file.list().length; i++) {
// System.out.println(file.list()[i]);
// }
//

} catch (Exception e) {
e.printStackTrace();
}
}

/**
*
*/

/**
* 链接到Fpt服务器
*
* @return
*/
public FtpClient open() {
FtpClient ftpClient = null;
try {
ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
ftpClient.binary();
} catch (Exception e) {
e.printStackTrace();
}
return ftpClient;
}

/**
* 链接到Fpt服务器
*
* @return
*/
public boolean open(FtpClient ftpClient) {
if (ftpClient != null) {
return true;
}
return false;
}

/**
* 从FTP服务器下载文件并返回下载文件长度
*
* @param ftpDirectoryAndFileName
*            :FTP服务器路径
* @param localDirectoryAndFileName
*            :下载文件后保存的路径
* @return
* @throws Exception
*/
public long download(String ftpDirectoryAndFileName,
String localDirectoryAndFileName) {
long result = 0;
// 创建ftp连接
FtpClient ftpClient = open();
if (!open(ftpClient))
return -2;
TelnetInputStream is = null;
FileOutputStream os = null;
try {
is = ftpClient.get(ftpDirectoryAndFileName);
File file = new java.io.File(localDirectoryAndFileName);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
os = new FileOutputStream(file);
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();
return -1;
} finally {
try {
if (is != null)
is.close();
if (os != null)
os.close();
} catch (IOException e) {
e.printStackTrace();
return -1;
}
}
return result;
}

/**
* 返回FTP目录下的文件列表
*
* @param ftpDirectory
*            (/doc/)
* @return
*/
@SuppressWarnings("deprecation")
public List<String> getFileNameListFTP(String ftpDirectory) {
List<String> list = new ArrayList<String>();
FtpClient ftpClient = null;
try {
ftpClient = open();
DataInputStream dis = new DataInputStream(ftpClient
.nameList(ftpDirectory));
String filename = "";
while ((filename = dis.readLine()) != null) {
filename = new String(filename.getBytes("ISO8859-1"), "GB2312");
list.add(filename);
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return list;
}

/**
* upload 上传文件
*
* @throws java.lang.Exception
* @return -1 文件不存在 -2 文件内容为空 >0 成功上传,返回文件的大小
* @param newname
*            上传后的新文件名
* @param filename
*            上传的文件
*/
public long upload(String filename, String newname) {
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
FtpClient ftpClient = null;
try {
ftpClient = open();
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);
}
} catch (IOException e) {
e.printStackTrace();
return -1;
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}

/**
* 上传文件夹下的文件到ftp目录
*
* @param oldPath
*            (上传的文件夹路径 G:/showTime/)
* @param newPath
*            (Ftp的文件夹目录 /doc/)
*/
public void listUpload(String oldPath, String newPath) {
// 设置全局变量 (中文文件名支持)
System.setProperty("file.encoding", "GBK");
File file = new File(oldPath);
int i = 1;
for (String filePath : file.list()) {
// 上传
long str = upload(oldPath + "/" + filePath, newPath + filePath);
System.out.println(filePath + "--" + (str > 0 ? true : false));
i++;
}
}

/**
*
* 删除文件夹下的文件到ftp目录
*
* @param path
*            (/doc/)
*/
public void listDelete(String path) {
// 设置全局变量 (中文文件名支持)
System.setProperty("file.encoding", "GBK");
// 得到该目录下所有文件
List<String> list = getFileNameListFTP(path);
for (String fileName : list) {
System.out.println(fileName + "--" + ftpDelete(fileName));
}
}

/**
* 删除文件
*
* @param fc
*            FTP连接对象
* @param filename
*            删除的文件名称
* @return
*/
public boolean ftpDelete(String filename) {
FtpClient fc = null;
try {
fc = open();
fc.sendServer("dele " + filename + "\r\n");
fc.readServerResponse();
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}

/**
* 随机产生文档简介
*
* @return 简介
*/
public String fileDesc() {
int number = 1;
try {
// 1 2 3 4
number = new Random().nextInt(4) + 1;
} catch (Exception e) {
e.printStackTrace();
}
String[] descString = {
"",
"简介........",
"那家伙很懒........",
"我是简介.......",
"unable to, be unable to, unable to speak, be unable to breathe, unable to move, be unable" };
return descString[number];
}

public List<String> getDocNameList(String path) {
List<String> list = new ArrayList<String>();
try {
File file = new File(path);
// 创建file数组用来存储数据
File[] filArr = file.listFiles();
for (int i = 0; i < filArr.length; i++) {
list.add(filArr[i].getAbsolutePath());
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}

/**
* 根据当前文件夹的现有的文档 创建通知xml
*
* @param docFolderPath
*            doc文件夹
* @param xmlPath
*            xml存放路径
* @param model
*            xml内容
* @return
*/
public boolean createXMl(String docFolderPath, String xmlPath,
FtpModel model) {
try {
List<String> list = getDocNameList(docFolderPath);
model.setCount(list.size() + "");
List<FtpModel> fileList = new ArrayList<FtpModel>();
for (String str : list) {
FtpModel file = new FtpModel();
String[] fileName = str.split("\\\\");
String fileTitle = (fileName[fileName.length - 1]).replaceAll(
"[.][^.]+$", "");
file.setFileTitle(fileTitle);
file.setFileDesc(fileDesc());
file.setFilePath("/doc/" + fileName[fileName.length - 1]);
File fileSize = new File(str);
file.setFileSize(fileSize.length() + "");
fileList.add(file);
}
model.setFileList(fileList);
exportXML(xmlPath, model);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}

/**
*
* @title exportXML 生成结果xml
* @param path
* @param docObject
* @throws IOException void
*/
public static int exportXML(String path, FtpModel docObject)
throws IOException {
try {
// 创建根节点 list;
Element root = new Element("xml");
// 根节点添加到文档中;
Document Doc = new Document(root);
// 创建节点 并赋text值
root.addContent(new Element("users").setText(docObject
.getUserName()));
root.addContent(new Element("count").setText(docObject.getCount()));
root.addContent(new Element("uploaddate").setText(docObject
.getUploadDate()));
Element root1 = new Element("filelist");
root.addContent(root1);
// 此处 for 循环可替换成 遍历 数据库表的结果集操作;
for (int i = 0; i < docObject.getFileList().size(); i++) {
// 创建节点 file;
Element elements = new Element("file");
FtpModel doc = docObject.getFileList().get(i);
// 创建节点 并赋text值
elements.addContent(new Element("filetitle").setText(doc
.getFileTitle()));
elements.addContent(new Element("filepath").setText(doc
.getFilePath()));
elements.addContent(new Element("filedesc").setText(doc
.getFileDesc()));
elements.addContent(new Element("filesize").setText(doc
.getFileSize()));
// 给父节点list添加user子节点;
root1.addContent(elements);
}
// 设置头部编码
XMLOutputter XMLOut = new XMLOutputter(Format.getPrettyFormat()
.setEncoding("utf-8"));
// 设置输出流 并设置编码格式
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(path), "utf-8");
// 输出XML
XMLOut.output(Doc, writer);
// 关闭流
writer.close();
return 0;
} catch (Exception e) {
e.printStackTrace();
return 1;
}
}
}

class FtpModel implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

private String id; // id标示

private String fileName; // 文档名称

private String count; // 文档个数

private Integer userId; // 用户id

private String userName;// 用户名

private String fileTitle; // 文库标题

private String fileSize; // 文档大小(字节)

private String filePath; // 文档路径

private String fileDesc; // 文档简介

private String uploadDate;// 上传时间

private String fileSuccess;// 文档上传成功数

private String fileError;// 文档上传失败数

private String handleDate;// 处理时间

private String errorId; // 我是错误编号

private String message;// 错误信息日志

private List<FtpModel> fileList = new ArrayList<FtpModel>(); // 文档集合

public FtpModel() {

}

public FtpModel(String fileTitle, String fileSize, String filePath,
String errorId, String message) {
this.fileTitle = fileTitle;
this.fileSize = fileSize;
this.filePath = filePath;
this.errorId = errorId;
this.message = message;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getFileName() {
return fileName;
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public Integer getUserId() {
return userId;
}

public void setUserId(Integer userId) {
this.userId = userId;
}

public String getFileSize() {
return fileSize;
}

public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}

public String getFilePath() {
return filePath;
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public String getFileDesc() {
return fileDesc;
}

public void setFileDesc(String fileDesc) {
this.fileDesc = fileDesc;
}

public String getUploadDate() {
return uploadDate;
}

public void setUploadDate(String uploadDate) {
this.uploadDate = uploadDate;
}

public List<FtpModel> getFileList() {
return fileList;
}

public void setFileList(List<FtpModel> fileList) {
this.fileList = fileList;
}

public String getCount() {
return count;
}

public void setCount(String count) {
this.count = count;
}

public String getFileSuccess() {
return fileSuccess;
}

public void setFileSuccess(String fileSuccess) {
this.fileSuccess = fileSuccess;
}

public String getFileError() {
return fileError;
}

public void setFileError(String fileError) {
this.fileError = fileError;
}

public String getHandleDate() {
return handleDate;
}

public void setHandleDate(String handleDate) {
this.handleDate = handleDate;
}

public String getErrorId() {
return errorId;
}

public void setErrorId(String errorId) {
this.errorId = errorId;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getFileTitle() {
return fileTitle;
}

public void setFileTitle(String fileTitle) {
this.fileTitle = fileTitle;
}
}
分享到:
评论

相关推荐

    java ftp连接池

    Java FTP连接池是一种用于管理FTP(文件传输协议)连接的资源池,它的主要目标是提高应用程序的性能和效率。在传统的FTP操作中,每次需要连接到FTP服务器时都会创建一个新的连接,这会消耗大量时间和系统资源。而...

    SpringBoot2.2+commons-pool2实现多Ftp连接池完整项目,开箱即用,经过长期生产使用稳定可靠

    使用JDK1.8、SpringBoot2.2.10.RELEASE、lombok1.18.8、guava23.0、hutool5.3.10、commons-pool2 2.7.0、tika1.22等实现多Ftp连接池实现,通过守护线程实现连接池内连接可用性校验,配置最大、最小连接个数防止Ftp...

    springboot集成ftp连接池工具

    通过上述方式,Spring Boot结合FTP连接池工具可以有效地提高并发用户上传附件的效率,避免因单个FTP连接频繁创建和关闭导致的性能瓶颈。这种方式尤其适用于需要处理大量文件上传的Web应用,如云存储、文件分享平台等...

    ftp连接池实例

    其实ftp连接池跟数据库连接池的原理是差不多的,不同的是ftp连接池有个连接时间的限制,如果你没设置的话,它的默认连接服务器的时间是0,所以我们要合理的设置它的服务器的时间,ftp.setConnectTimeout(5000);...

    C# ftp连接到服务器

    在C#编程环境中,我们可以利用.NET框架提供的System.Net命名空间中的FtpWebRequest和FtpWebResponse类来实现FTP连接,从而进行文件的上传和下载操作。下面将详细介绍如何在C#中实现FTP连接到服务器以及相关的知识点...

    ftp连接器,经典的ftp操作

    这个"ftp连接器"应该是提供了一个编程接口或工具,使得开发者能够轻松地实现FTP的基本操作,如连接、上传、下载等。接下来,我们将深入探讨FTP的相关知识点。 1. FTP协议基础: FTP基于TCP/IP协议族,它定义了两台...

    FTP连接抓包分析.docx

    FTP 连接抓包分析 FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的协议。它是应用层协议,使用 TCP 作为传输层协议。FTP 的主要目标是提供一种高效、可靠的文件传输方式。 FTP 连接过程...

    FTP连接与密码明文抓取的实验内容(win2003).pdf

    FTP连接与密码明文抓取的实验内容(win2003).pdf 学习资料 复习资料 教学资源

    java中的ftp连接与获取.rar_ftp java_java ftp_连接ftp

    本文将深入探讨Java中实现FTP连接的基本步骤和关键知识点。 首先,Java提供了一个内置的`java.net.Socket`类,可以用来创建网络连接,但FTP协议的复杂性使得直接使用Socket进行FTP操作并不方便。因此,Java社区开发...

    C#-ftp连接示例源码

    本文将详细介绍如何在C#中实现FTP连接,并提供相关的示例源码。 首先,为了在C#中实现FTP连接,我们需要使用System.Net命名空间中的FtpWebRequest和FtpWebResponse类。这两个类提供了与FTP服务器交互的基本功能,...

    FTP连接 能简单地连接服务器,上传文件

    FTP连接的简易性和易用性是其主要优点,使得用户能够轻松地进行文件操作。 "FTP连接"通常涉及到以下几个关键概念: 1. **FTP客户端**:这是用户用来与FTP服务器交互的软件,如CuteFTP 8,它是流行的FTP客户端之一...

    ftp连接Windows和Linux实现文件互传FTP.zip

    ftp连接Windows和Linux实现文件互传。同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP...

    Delphi 实现FTP连接及上传下载

    1. **FTP连接**: - 设置`TIdFTP`的`Host`属性为FTP服务器的地址。 - 可以设置`Port`属性为服务器的端口号,默认是21。 - 使用`Username`和`Password`属性输入FTP服务器的登录凭证。 - 调用`Connect`方法建立...

    Java实现的FTP连接与数据浏览程序

    2. **FTP连接**:首先,需要创建一个`FTPClient`实例,然后通过调用`connect()`方法连接到FTP服务器,指定服务器地址和端口号。连接成功后,可以通过`login()`方法进行身份验证,输入用户名和密码。 3. **FTP模式**...

    FTP连接 下载上传

    在这个`CFTPUtil`类中,构造函数用于建立FTP连接,`download`方法用于从服务器下载文件,`upload`方法用于上传本地文件到服务器,最后`disconnect`方法用于关闭FTP连接。 使用这个工具类,你可以轻松地进行FTP操作...

    FTP.rar_QT_QT FTP复制文件_QT FTP连接_earlywj7_qt 5.9ftp

    在本主题中,我们将深入探讨如何使用QT 5.9版本来实现FTP连接和文件复制。 首先,为了在QT中使用FTP,我们需要包含必要的库。QT 5.9中,可以使用`QT += network`来启用网络模块,这个模块包含了FTP客户端的功能。在...

    基于java的开发源码-实现的FTP连接与数据浏览程序.zip

    mysql 基于java的开发源码-实现的FTP连接与数据浏览...基于java的开发源码-实现的FTP连接与数据浏览程序.zip基于java的开发源码-实现的FTP连接与数据浏览程序.zip基于java的开发源码-实现的FTP连接与数据浏览程序.zip

    免费的ftp连接工具

    FTP(File Transfer Protocol)是一种用于在互联网上传输文件的标准协议,免费的FTP连接工具则为用户提供了一种便捷的方式来实现这一功能。本篇文章将详细介绍这款免费开源的FTP软件及其特点。 FTP软件是通过FTP...

    在solaris10下配置ssh及使用客户端FTP连接

    Solaris 10 下配置 SSH 及使用客户端 FTP 连接 Solaris 10 是一个 Unix 操作系统,由 Sun Microsystems 开发。 SSH(Secure Shell)是 Solaris 10 中的一个安全协议,用于远程登录和文件传输。 FTP(File Transfer ...

Global site tag (gtag.js) - Google Analytics