JAVA怎么实现删除远程FTP服务器上的某一文件

JAVA怎么实现删除远程FTP服务器上的某一文件,第1张

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,

(1):Java FTP主文件代码:

package ftpDemo

import java.io.DataOutputStream

import java.io.InputStream

import java.io.OutputStream

import sun.net.TelnetInputStream

import sun.net.TelnetOutputStream

import sun.net.ftp.FtpClient

public class ftpUtil {

// 上传文件至FTP通用方法

public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){

try {

String ftpHost = kmConfig.getFtpHost()

int port = kmConfig.getFtpPort()

String userName = kmConfig.getFtpUser()

String passWord = kmConfig.getFtpPassword()

String path = kmConfig.getFtpPath()

FtpClient ftpClient = new FtpClient(ftpHost, port)// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。

ftpClient.login(userName, passWord)// userName、passWord分别为FTP服务器的登陆用户名和密码

ftpClient.binary()

ftpClient.cd(path)// path为FTP服务器上保存上传文件的路径。

TelnetOutputStream telnetOut = ftpClient.put(fileName)// fileName为上传的文件名

DataOutputStream dataOut = new DataOutputStream(telnetOut)

byte buffer[] = new byte[ * ]

int count =

while ((count = is.read(buffer)) != -) {

dataOut.write(buffer, , count)

}

telnetOut.close()

dataOut.close()

ftpClient.closeServer()

} catch (Exception e) {

System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动")

}

}

// 删除文件至FTP通用方法

public static void deleteFileFtp(KmConfig kmConfig,String fileName){

try {

String ftpHost = kmConfig.getFtpHost()

int port = kmConfig.getFtpPort()

String userName = kmConfig.getFtpUser()

String passWord = kmConfig.getFtpPassword()

String path = kmConfig.getFtpPath()

FtpClient ftpClient = new FtpClient(ftpHost, port)// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。

ftpClient.login(userName, passWord)// userName、passWord分别为FTP服务器的登陆用户名和密码

ftpClient.binary()

ftpClient.cd(path)// path为FTP服务器上保存上传文件的路径。

try {

ftpClient.sendServer("dele " + fileName + "\r\n")

} catch (Exception e) {

System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动")

}

ftpClient.closeServer()

} catch (Exception e) {

System.out.println("删除文件失败!")

}

}

// 下载ftp文件

public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){

try {

String ftpHost = kmConfig.getFtpHost()

int port = kmConfig.getFtpPort()

String userName = kmConfig.getFtpUser()

String passWord = kmConfig.getFtpPassword()

String path = kmConfig.getFtpPath()

FtpClient ftpClient = new FtpClient(ftpHost, port)// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。

ftpClient.login(userName, passWord)// userName、passWord分别为FTP服务器的登陆用户名和密码

ftpClient.binary()

ftpClient.cd(path)// path为FTP服务器上保存上传文件的路径。

try {

TelnetInputStream in = ftpClient.get(fileName)

byte[] bytes = new byte[]

int cnt=

while ((cnt=in.read(bytes,,bytes.length)) != -) {

outputStream.write(bytes, , cnt)

}

outputStream.close()

in.close()

} catch (Exception e) {

ftpClient.closeServer()

e.printStackTrace()

}

ftpClient.closeServer()

} catch (Exception e) {

System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动")

}

}

//在ftp服务器上传件文件夹

public boolean createDir(String path,FtpClient ftpClient) throws Exception{

//进入到home文件夹下

ftpClient.cd("/home")

//创建远程文件夹

//远程命令包括

//USER  PORT  RETR  ALLO  DELE  SITE  XMKD  CDUP  FEAT<br>

//     PASS  PASV  STOR  REST  CWD   STAT  RMD   XCUP  OPTS<br>

//     ACCT  TYPE  APPE  RNFR  XCWD  HELP  XRMD  STOU  AUTH<br>

//     REIN  STRU  SMNT  RNTO  LIST  NOOP  PWD   SIZE  PBSZ<br>

//     QUIT  MODE  SYST  ABOR  NLST  MKD   XPWD  MDTM  PROT<br>

//        在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>

//          ftpclient.sendServer("XMKD /test/bb/r/n")//执行服务器上的FTP命令<br>

//          ftpclient.readServerResponse一定要在sendServer后调用<br>

//          nameList("/test")获取指目录下的文件列表<br>

//          XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>

//          XRMD删除目录<br>

//          DELE删除文件<br>

//通过远程命令 穿件一个files文件夹

ftpClient.sendServer("MKD "+ path + "\r\n")

//这个方法必须在 这两个方法中间调用 否则 命令不管用

ftpClient.binary()

ftpClient.readServerResponse()

return false

}

/**

* 检查文件夹是否存在

* @param dir

* @param ftpClient

* @return

*/

public boolean isDirExist(String dir, FtpClient ftpClient) {

try {

ftpClient.cd(dir)

} catch (Exception e) {

return false

}

return true

}

}

(2):KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。

package ftpDemo

public class KmConfig {

//主机ip

private String FtpHost = ""

//端口号

private int FtpPort

//ftp用户名

private String FtpUser = ""

//ftp密码

private String FtpPassword = ""

//ftp中的目录

private String FtpPath = ""

public String getFtpHost() {

return FtpHost

}

public void setFtpHost(String ftpHost) {

FtpHost = ftpHost

}

public int getFtpPort() {

return FtpPort

}

public void setFtpPort(int ftpPort) {

FtpPort = ftpPort

}

public String getFtpUser() {

return FtpUser

}

public void setFtpUser(String ftpUser) {

FtpUser = ftpUser

}

public String getFtpPassword() {

return FtpPassword

}

public void setFtpPassword(String ftpPassword) {

FtpPassword = ftpPassword

}

public String getFtpPath() {

return FtpPath

}

public void setFtpPath(String ftpPath) {

FtpPath = ftpPath

}

}

(3):下面是测试代码:

呵呵,这个很简单,用java File 类即可实现

主要代码如下:

File file=new File("E:\\java\\3.jpg") //具体文件路径(可以从数据库里面读取出来)

if(file.isFile()){

file.delete()//这是主要的操作

}

import java.io.InputStream

import java.io.PrintStream

import org.apache.commons.net.telnet.TelnetClient

/**

* 利用apache net 开源包,使用telnet方式获取AIX主机信息

* @version 1.2

*/

public class NetTelnet {

// Telnet对象

private TelnetClient telnet = new TelnetClient()

private InputStream in

private PrintStream out

// 提示符。具体请telnet到AIX主机查看

private char prompt = '#'

// telnet端口

private String port

// 用户

private String user

// 密码

private String password

// IP地址

private String ip

public NetTelnet() {

try {

// AIX主机IP

this.ip = "219.243.12.10"

this.password = "05933663007"

this.user = "administrator"

this.port = "23"

telnet.connect(ip, Integer.parseInt(port))

System.out.println("开始获取输入流...")

in = telnet.getInputStream()

out = new PrintStream(telnet.getOutputStream())

// 登录

/* readUntil("login: ")

write(user)

readUntil("Password: ")

write(password)

readUntil(prompt + " ")*/

} catch (Exception e) {

e.printStackTrace()

}

}

/**

* 读取分析结果

*

* @param pattern

* @return

*/

public String readUntil(String pattern) {

try {

char lastChar = pattern.charAt(pattern.length() - 1)

StringBuffer sb = new StringBuffer()

char ch = (char) in.read()

while (true) {

sb.append(ch)

if (ch == lastChar) {

if (sb.toString().endsWith(pattern)) {

return sb.toString()

}

}

ch = (char) in.read()

}

} catch (Exception e) {

e.printStackTrace()

}

return null

}

/**

* 写

*

* @param value

*/

public void write(String value) {

try {

out.println(value)

out.flush()

} catch (Exception e) {

e.printStackTrace()

}

}

/**

* 向目标发送命令字符串

*

* @param command

* @return

*/

public String sendCommand(String command) {

try {

write(command)// 执行删除的命令 rm -rf *.*

return readUntil(prompt + " ")

} catch (Exception e) {

e.printStackTrace()

}

return null

}

/**

* 关闭连接

*

*/

public void disconnect() {

try {

telnet.disconnect()

} catch (Exception e) {

e.printStackTrace()

}

}

public static void main(String[] args) {

try {

System.out.println("开始执行telnet......")

NetTelnet telnet = new NetTelnet()

// 通过aix的命令“查找主机名称”获取数据

// 命令是 "hostname"

// 不熟悉命令的参考<<AIX网络管理手册>>

System.out.println("开始发送hostname命令")

String result = telnet.sendCommand("hostname")

System.out.println("显示结果")

System.out.println(result)

// 最后一定要关闭

telnet.disconnect()

} catch (Exception e) {

e.printStackTrace()

}

}

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/210586.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存