package cn.com.fastersoft.zhmobiletyt.notice;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import sun.net.TelnetOutputStream;
import sun.net.ftp.*;
/**
* Class FtpFileUpload.java
* Function 使用ftp上传文件、目录
*/
public class FtpFileUpload {
private FtpClient ftpClient=null;
public FtpFileUpload(){
ftpClient=new FtpClient();
ftpClient.setConnectTimeout(5000);//设置连接超时时间为5s
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FtpFileUpload ftp = new FtpFileUpload();
ftp.connect("10.249.194.101", 21, "wyz", "1");
ftp.uploadDirectory("C:/Documents and Settings/Administrator/桌面/Flash");
}
/**
* 建立与ftp服务器的连接
* @param host 主机
* @param port 端口
* @param user 用户名
* @param password 密码
* @throws IOException 建立连接失败
*/
public void connect(String host,int port,String user,String password)throws IOException{
ftpClient.openServer(host,port);
ftpClient.login(user,password);
ftpClient.binary();
}
/**
* 进入某一级目录
* @param relativePath 相对路径(也可以是绝对路径,但要注意写法)
* @throws IOException 目录不存在或权限不够
*/
public void cd(String relativePath)throws IOException{
ftpClient.cd(relativePath);
}
/**
* 上传整个目录
* @param directory 目录路径
* @throws IOException 目录不存在或访问权限不够
*/
public void uploadDirectory(String directory)throws IOException{
File file=new File(directory);
String name=null;//待上传文件名
if(file.isDirectory()){//如果为目录,则按目录传
File[] files=file.listFiles();
//在ftp服务器上创建对应目录
ftpClient.ascii();
String dir = file.getName();
ftpClient.sendServer("XMKD " + dir + "\r\n");
ftpClient.readServerResponse();
ftpClient.cd(dir);
ftpClient.binary();
//循环传递目录下的所有文件与目录
int i=0;
for(i=0;i<files.length;i++){
File tmpFile=files[i];
if(tmpFile.isDirectory())
uploadDirectory(tmpFile.getAbsolutePath());
else{
name=tmpFile.getName();
upload(directory+"/"+name);
}
}
}
else //如果为文件,则按文件上传
upload(directory,file.getName());
}
/**
* 上传文件
* @param srcFile 源文件
* @throws IOException
*/
public void upload(String srcFile)throws IOException{
File file=new File(srcFile);
FileInputStream fin=new FileInputStream(srcFile);
TelnetOutputStream tos = ftpClient.put(file.getName());
//System.out.println(file.getName());
int readLength = 0;
byte[] buf = new byte[1024];
while ( (readLength = fin.read(buf)) != -1) {
tos.write(buf, 0, readLength);
}
fin.close();
tos.close();
}
/**
* 上传文件,且重新命名
* @param srcFile 源文件
* @param destFile 目标文件名
* @throws IOException
*/
public void upload(String srcFile,String destFile)throws IOException{
upload(srcFile);
File file=new File(srcFile);
ftpClient.rename(file.getName(), destFile);
}
/**
* 断开与服务器连接
*/
public void close(){
try {
ftpClient.closeServer();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//public static void main(String[] args) {
// // TODO Auto-generated method stub
// FtpFileUpload ftpUpload=new FtpFileUpload();
// try {
// ftpUpload.connect("10.10.10.10",21,"bwgm","bwgm");
// ftpUpload.cd("ftpserver/test");//打开FTP文件路径
// //ftpUpload.upload("D:\\upload\\ttt\\testftp.txt", "test1");//上传文件新命名
// ftpUpload.uploadDirectory("D:\\upload\\ttt\\testftp.txt");
// ftpUpload.close();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//}
}
分享到:
相关推荐
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载以及创建多级文件夹的功能,并提供一个可以直接使用的demo。 首先,Java中的FTP操作通常依赖于`org.apache.commons.net.ftp`库,这个库提供了FTPClient...
Java 实现 FTP 上传和创建文件夹 Java 实现 FTP 上传是指使用 Java 语言通过 FTP 协议将文件上传到 FTP 服务器的过程。在这个过程中,需要使用commons-net-3.3.jar包来实现 FTP 客户端的连接和文件上传。本文将详细...
本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`,该类提供了一系列功能来与FTP服务器交互,包括连接到服务器、上传文件、下载文件、获取文件列表、删除文件和目录以及关闭连接等操作。 #### 二、`...
Java作为多平台支持的编程语言,提供了丰富的库和工具来实现FTP功能,包括下载、上传文件以及定时监控等操作。本篇文章将深入探讨如何使用Java进行FTP文件传输,并涉及自动解压和压缩的功能。 首先,让我们关注Java...
总结起来,Java实现FTP上传下载、删除文件及创建文件夹涉及的主要知识点有: 1. 使用FTP客户端库(如`sun.net.ftp.FtpClient`)。 2. 建立与FTP服务器的连接,登录和设置传输模式。 3. 文件上传,通过读取本地文件...
java远程FTP浏览文件及操作文件删除,上传下载
JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。
Java编写的FTP上传下载工具是一种基于Java语言实现的文件传输应用程序,主要功能是与FTP(File Transfer Protocol)服务器进行交互,实现文件的上传和下载。这个工具特别之处在于它支持多用户登录,这意味着不同的...
通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤介绍: 首先,我们需要引入Java的FTP客户端库,如Apache Commons Net库。这个库提供了丰富的...
在Java中,我们可以使用多种库来实现FTP功能。`ftp4j`是一个流行的开源库,它提供了丰富的API,方便我们进行FTP操作。这个库支持主动和被动模式,可以处理FTP的各种特性,如断点续传、SSL/TLS加密等。 3. `ftp4j`...
在Java编程环境中,实现远程Ubuntu FTP(文件传输协议)下载文件和文件夹是一项常见的任务,尤其是在构建跨平台的系统集成或者自动化运维方案时。FTP允许客户端与服务器之间进行高效的数据交换,而Java提供了多种库...
在这个“FTP上传下载工具”中,开发者使用Java语言构建了一个功能强大的客户端应用,它能够实现文件和文件夹的上传与下载,并且带有进度显示,极大地提高了用户在处理大文件时的体验。 1. **Java FTP库**: 这个...
Java实现SFTP(Secure File Transfer Protocol)客户端上传文件和文件夹是一项常见的任务,尤其是在系统集成或者数据迁移场景中。下面将详细介绍如何通过Java实现这一功能,主要涉及的技术点包括SFTP协议、JSch库的...
以下是一些关于使用Java多线程FTP上传和下载的关键知识点: 1. **FTPClient初始化**:创建`FTPClient`对象,并设置连接参数,如主机名、端口号、用户名和密码。使用`connect()`方法建立与FTP服务器的连接,然后调用...
在这个场景下,Java多线程技术可以用于优化FTP上传的效率,例如通过并发上传多个文件来加速整个过程。 首先,我们来了解一下Java中的线程。在Java中,Thread类是所有线程的基类,通过创建Thread对象并调用其start()...
以上就是使用Java进行FTP文件上传和下载的基本操作,对于文件夹的处理,通常需要递归地处理目录内的所有文件和子目录。在Apache Commons Net中,可以使用 `FTPClient` 的 `changeWorkingDirectory()` 和 `listNames...
以下是一个使用Apache Commons Net库进行FTP上传和下载的简单示例: 1. **FTP连接**: - 导入必要的库:`import org.apache.commons.net.ftp.FTP;` 和 `import org.apache.commons.net.ftp.FTPClient;` - 创建`...
对于FTP操作,我们可以使用Apache Commons Net库,这是一个强大的Java FTP客户端库,提供了丰富的FTP功能,包括文件上传、下载以及目录操作。 1. **安装Apache Commons Net库**:在项目中添加Apache Commons Net...
使用FileZilla搭建FTP服务,实现java操作共享文件夹中的文件,上传、下载、删除,使用smbfile操作共享文件会出现连接服务失败的情况