`
aiyalhw
  • 浏览: 63304 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

FTP

阅读更多
package com.lhw.ftp;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.StringTokenizer;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
* FTP文件配置远程连接
*/
public class FtpClientUtil {
String localfilename;
String remotefilename;
FtpClient ftpClient;
public FtpClientUtil() {
ftpClient = new FtpClient();
}
/***************************************************************************
* 判断指定ftp服务器是否能够连接,并且指定目录
* @param ip
* @param port
* @param user
* @param password
* @param path
* @throws IOException
*/
public void connectServer(String ip, int port, String user,
String password, String path) throws IOException {
ftpClient.openServer(ip, port);
ftpClient.login(user, password);
System.out.println("login success!");
ftpClient.ascii();
//ftpClient.binary();
}
public void connectServer(String ip, int port, String user, String password)
throws IOException {
ftpClient.openServer(ip, port);
ftpClient.login(user, password);
String currentpath = ftpClient.pwd();
System.out.println(ip + "login success!");
ftpClient.ascii();
//ftpClient.binary();
}
/***************************************************************************
* 指向指定路径,指定文件加,用来放置上传文件,同时制定下载文件的路径, 那么每次上传下载文件,要先做这个操作,指定到某个路径(文件??
*
* @param ftpClient
* @param path
* @throws Exception
*/
public void cdPath(String path) throws Exception {
boolean isexit = false;// 标识文件夹或者文件是否存??
if (path.length() != 0) {
// isexit = isDirExist(path);
// if (isexit == false) {
// createDir(path);
// }
try {
ftpClient.cd(path);
} catch (IOException e) {
throw new Exception(path + ",该路经不存在,或??无权访问该目");
}
}
}
/***************************************************************************
* 用来????ftp服务器能否连接,这里????这么????,我这个直接用ajax来实现,用来
* @param ip
* @param port
* @param user
* @param password
* @return
* @throws IOException
*/
public boolean connectServercheckByIndex(String ip, int port, String user,
String password,String path){
FtpClient ftpCli = new FtpClient();
try {
ftpCli.openServer(ip, port);
ftpCli.login(user, password);
ftpCli.cd(path);
System.out.println("login success!");
} catch (IOException e) {
return false;
} finally {
try {
if (ftpCli.serverIsOpen()) {
ftpCli.closeServer();
System.out.println("disconnect success");
}
} catch (IOException ex) {
System.out.println("not disconnect");
System.out.println(ex);
return false;
}
}
return true;
}
分享到:
评论
4 楼 aiyalhw 2009-12-16  
/***************************************************************************
* 上传文件,在我们进行上传文件的过程中,我这里????进行的一个问题, 在上传之前,看需不需要指定路径, 如果ftp服务器上没有
* @throws Exception
*/
public void upload() throws Exception {
IniFileClientUtil filecreate = new IniFileClientUtil();
filecreate.createFile("HappyHappy",
"D:/workspace/INFOX-EXPSMSV100R002C02B06/WebContent/TEMPINIFODER/systemconfig2009-10-20-21-07-31.ini");
this.localfilename = "D://aaa.txt";
this.remotefilename = "kkkkk.txt";
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = new java.io.File(this.localfilename);
if (!file_in.exists()) {
throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");
}
os = ftpClient.put(this.remotefilename);
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("upload success");
} catch (IOException ex) {
System.out.println("not upload");
System.out.println(ex);
}finally{
try {
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3 楼 aiyalhw 2009-12-16  

/**
* 在当前目录下创建文件??
*
*
* @param dir
* @return
* @throws Exception
* @throws Exception
*/
private void createDir(String dir) throws Exception {
try {
String pathName = "";
ftpClient.ascii();
StringTokenizer s = new StringTokenizer(dir, "/"); // sign
s.countTokens();
while (s.hasMoreElements()) {
pathName = pathName + "/" + (String) s.nextElement();
ftpClient.sendServer("MKD " + pathName + "\r\n");
System.out.println(ftpClient.serverInput.read());
int responsecode = ftpClient.readServerResponse();
}
ftpClient.ascii();
//ftpClient.binary();

} catch (IOException e1) {
throw new Exception("用户提供的路径不存在,创建路经有问题,可能无权限");
}
}

/**
* 验证文件夹在当前目录下是否存?
* @param dir
* @return
*/
private boolean isDirExist(String dir) {
try {
ftpClient.cd(dir);
} catch (Exception e) {
return false;
}
return true;
}

public FtpClient getFtpClient() {
return ftpClient;
}

public void setFtpClient(FtpClient ftpClient) {
this.ftpClient = ftpClient;
}

public static void main(String agrs[]) {
FtpClientUtil fu = new FtpClientUtil();
try {
//FTP检测连接
if(fu.connectServercheck("127.0.0.1", 21, "ROOT", "123456")){
//初始化连接
fu.connectServer("127.0.0.1", 21, "ROOT", "123456",
"testTemp/tppp");
// 这个字符串,????到常量类当中去进行配??
String newName = "/home/smsweb/Documents/aa";
boolean isexit = fu.isDirExist(newName);
System.out.println("isexit=======" + isexit);
if (!fu.isDirExist(newName)) {
fu.createDir(newName);
}
fu.ftpClient.cd(newName);
fu.upload();
}else{
System.out.println("无法获取连接!!!");
}

} catch (Exception e) {
e.printStackTrace();
}
fu.closeConnect();
}
2 楼 aiyalhw 2009-12-16  
/****
* 该方法用来上传文??
* @param localfilename
*            临时文件,可能是多级目录下的文件,需要生成多级目??
* @param remotefilename
*            这个是用来上传到我们ftp服务器上以后显示的名??我这里想知道的呢?就是我这里这些目录的??择,
* 我是不是????用户进行路径配置呢?我这里是有这个路径配置的??其次还有点,就是这个页面的,某个文本框的用户输入都要做限??
* @throws Exception
*/
public void upload(String localfilename, String remotefilename)
throws Exception {
// 如何生成????临时文件路径下生成一个临时文件夹,我应该放到我们的工程上的临时目录上好了??
// 然后上传到对应的这个ftp配置,我本地不需要备份了,查看数据库记录就行了???????
this.localfilename = localfilename;
this.remotefilename = remotefilename;
TelnetOutputStream os = null;
FileInputStream is = null;
java.io.File file_in = null;
try {
os = ftpClient.put(this.remotefilename);
file_in = new java.io.File(this.localfilename);
if (!file_in.exists()) {
throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");
}
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("upload success");

} catch (IOException e) {
// e.printStackTrace();
System.err.println("Exception e in Ftp upload(): " + e.toString());
// return false;
throw new Exception("ini文件上传失败,可能无上传权?");

} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* 得到当前FTP服务器路径
* @return
*/
public String getCurrentFtpPath() {
String currentFtpPath = "";
try {
currentFtpPath = ftpClient.pwd();
} catch (IOException e) {
e.printStackTrace();
}
return currentFtpPath;
}
1 楼 aiyalhw 2009-12-16  

/***************************************************************************
* 用来????ftp服务器能否连接,这里????这么????,我这个直接用ajax来实现,用来
* @param ip
* @param port
* @param user
* @param password
* @return
* @throws IOException
*/
public void connectServercheck(String ip, int port, String user,
String password,String path) throws Exception {
FtpClient ftpCli = new FtpClient();
try {
ftpCli.openServer(ip, port);
ftpCli.login(user, password);
System.out.println("login success!");
try {
ftpCli.cd(path);
} catch (Exception e) {
// TODO Auto-generated catch block
throw new Exception("登录成功,访问路径失败,请检查路径或者是否有访问权限");
} finally {
try {
if (ftpCli.serverIsOpen()) {
ftpCli.closeServer();
System.out.println("disconnect success");
}
} catch (IOException ex) {
System.out.println("not disconnect");
System.out.println(ex);
}
}
} catch (IOException e) {
throw new Exception("FTP信息登录失败,请检查用户名密码IP或端");
} finally {
try {
if (ftpCli.serverIsOpen()) {
ftpCli.closeServer();
System.out.println("disconnect success");
}

} catch (IOException ex) {
System.out.println("not disconnect");
System.out.println(ex);
}
}
}
/**
* FTP 服务器连接检测
* @param ip
* @param port
* @param user
* @param password
* @return
*/
public boolean connectServercheck(String ip, int port, String user,
String password) {
FtpClient ftpCli = new FtpClient();
try {
ftpCli.openServer(ip, port);
ftpCli.login(user, password);
System.out.println("login success!");
} catch (IOException e) {
System.out.println("Error Information of Ftp,Login fail");
return false;
} finally {
try {
if (ftpCli.serverIsOpen()) {
ftpCli.closeServer();
System.out.println("disconnect success");
}
} catch (IOException ex) {
System.out.println("not disconnect");
System.out.println(ex);
}
}
return true;
}
/**
* 此方法用来,关闭ftp的连??
*
*/
public void closeConnect() {
try {
if (ftpClient.serverIsOpen()) {
ftpClient.closeServer();
System.out.println("disconnect success");
}
} catch (IOException ex) {
System.out.println("not disconnect");
System.out.println(ex);
}

}

相关推荐

    webftp.zip ftp源码

    WebFTP是一种基于Web的FTP(File Transfer Protocol)客户端软件,允许用户通过网页浏览器进行FTP文件传输操作。在本文中,我们将深入探讨FTP的基本概念、WebFTP的工作原理以及它在实际应用中的重要性。 FTP,全称...

    WebFtp(Web 版Ftp)

    WebFtp是一款基于ASP.NET技术实现的Web版FTP服务,它允许用户通过浏览器进行FTP相关的操作,如上传、下载、删除文件,重命名文件,编辑文本文件,以及创建和删除文件夹。这样的服务大大简化了FTP客户端的使用,使得...

    FTP服务器单文件绿色版FTPServer

    FTP服务器是一种用于在互联网上进行文件传输的服务,它允许用户从一台计算机(客户端)向另一台计算机(服务器)上传或下载文件。FTP(File Transfer Protocol)是这项服务的基础协议,它是一个标准网络协议,用于在...

    使用 ftp-srv 在 nodejs 创建FTP服务器,简单版

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在计算机之间传输文件。在这个场景中,我们将探讨如何使用Node.js中的`ftp-srv`库来创建一个简单的FTP服务器。`ftp-srv`是一个易于使用的FTP服务器模块...

    FTPserver(迷你FTP服务器)

    FTPserver这是一款免费的、绿色的(无需安装,只有一个文件)、小巧的(84KB)的FTP服务器软件。可以轻松地将它放在U盘里,邮箱里,网盘里,或者网站上随时下载,这样,就有了一个可以随身携带的FTP服务器软件。 功能...

    ftp.rar_ftpput_ftpput ftpget_实现ftpget与ftpput功能

    FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件传输。本文将详细探讨如何实现FTP客户端的两个关键功能:FTPGET(下载文件)和FTPPUT(上传文件),以及这两个功能在实际应用中...

    传送图片至FTP及显示FTP上图片

    在IT行业中,FTP(File Transfer Protocol)是一种广泛用于在互联网上传输文件的协议。本教程将详细介绍如何将图片传输到FTP服务器以及如何在FTP服务器上显示这些图片。 首先,我们需要理解FTP的基本工作原理。FTP...

    Linux离线安装ftp安装包

    在Linux系统中,FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。本资源提供了一种离线安装FTP服务器的方法,特别适用于没有网络连接或者网络环境受限的Linux环境。这里我们将...

    webFTP一个PHP写的在线FTP文件管理系统

    **webFTP概述** webFTP是一个基于PHP开发的在线FTP文件管理系统,它允许用户通过Web界面进行FTP服务器的文件管理和操作,极大地提升了FTP管理的便捷性和灵活性。作为一个轻量级的解决方案,webFTP使得用户无需安装...

    麒麟V10服务器搭建FTP服务

    麒麟V10服务器搭建FTP服务 FTP(File Transfer Protocol)是一种常用的文件传输协议,麒麟V10服务器搭建FTP服务可以帮助用户快速搭建FTP服务器,实现文件的上传、下载和共享。本文将指导用户如何在麒麟V10服务器上...

    QT5.0实现FTP服务器

    FTP(File Transfer Protocol)是一种标准网络协议,用于在计算机网络上在客户端和服务器之间传输文件。在QT5.0中实现FTP服务器,可以让我们自定义一个能够处理文件上传和下载的服务,这对于开发文件管理或共享应用...

    详解ftp创建文件权限问题

    详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...

    一个FTP客户端

    如果用本FTP客户端登录某个FTP服务器,则先必须申请一个FTP空间,申请FTP空间时,它会给你一个FTP主机地址、用户名称、用户密码。 测试步骤: 1、项目编译并运行。 2、申请一个FTP空间(这里不讨论)。 3、输入FTP...

    ftp4j-一个开源的支持代理的FTP组件

    ftp4j是个很年轻的开源项目,但是试用后发现很好很强大,如果你找一个纯java的FTP库,要支持socks4,socks4a,socks5,http代理,就是他了! 比apache的FTPClient(不支持代理)、半商业的edtFTPj(PRO支持代理,...

    ftp批量上传文件bat

    实现FTP批量上传文件到指定目录功能的bat脚本: @echo off @echo delete iplist.txt @del iplist.txt @setlocal EnableDelayedExpansion @echo create upload iplist.... @for /L %%i in (51,1,52) do ( @echo ...

    FTP软件FTP Voyager实用技巧四则

    FTP Voyager实用技巧四则 FTP Voyager是一款功能强大且实用的FTP客户端软件,由同为Serv-U的开发者所创,不仅界面简洁易用、功能强大,还具有多种实用技巧可以挖掘。 一、软件功能简介 FTP Voyager是一款功能强大...

    FTP开源代码 C++

    FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。在这个开源代码库中,我们关注的是C++实现的FTP客户端或服务器端的代码,这为理解和学习FTP工作原理提供了宝贵资源。 首先,...

    QT5.0实现FTP客户端

    2. **QNAM与FTP**:虽然QNetworkAccessManager没有直接提供FTP操作的接口,但可以通过构造一个QNAM的子类并重写其内部的槽函数,来监听FTP相关的信号,从而实现FTP客户端功能。 3. **QNetworkRequest**:创建...

    全中文FTP服务器 Quick Easy FTP Server V3.9.1 绿色版

    Quick Easy FTP Server是一款专为中文用户设计的FTP服务器软件,其V3.9.1绿色版无需安装,方便快捷。FTP(File Transfer Protocol)是一种网络协议,主要用于在互联网上进行文件传输,它允许用户从一台计算机上传或...

    FTP Utility 2.0 日文

    FTP Utility 2.0 是一款由柯尼卡美能达公司开发的日文版FTP客户端工具,主要用于方便用户在计算机和远程服务器之间传输文件。这款软件适用于企业或个人,特别是那些需要频繁进行文件上传和下载的用户。通过FTP ...

Global site tag (gtag.js) - Google Analytics