java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容!

请注意是文件夹的内容,不是文件。所用的包是sun.net.ftp.FtpClient!我需要明确的知道如何便利的到文件夹下的文件。问题解决分数可以再加!
我需要知道的是如何获取远程文件夹下的文件夹列表?

假如文件夹里面有文件的话,ftpclient根本删除不了文件夹,不像其他api可以自动递归删除,所以得先删除文件夹里面的文件,然后在删除文件夹,
删除之前记得改变下工作目录 fileName是dirName里面的文件
ftpClient.changeWorkingDirectory(remoteDir+dirName)

删除文件命令:ftpClient.deleteFile(fileName);
删除完文件后更改目录ftpClient.changeWorkingDirectory(remoteDir)
删除文件夹命令:ftpClient.removeDirectory(dirName);
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-10
楼上说了遍历文件夹底下所有文件的方法

ftpClient所带的API提供了

ftpClient.sendServer("DELE " + filename + "\r\n");

但是它没有返回值,所以在实际应用中它还是有时候存在删不掉的问题。

贴一段代码不知道是不是你想要的。

import sun.net.ftp.*;
import java.io.*;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.ArrayList;
import java.util.Iterator;
import java.lang.*;
import java.text.DecimalFormat;

//FtpClass类
class FtpClass {
FtpClient client;
private String host;
private String username;
private String password;
private String path = "/";
private int port = 21;
private static FtpClass instance;

private FtpClass() {
}

// 获得唯一实例

public static FtpClass getInstance() {
if (instance == null) {
instance = new FtpClass();
}
return instance;
}

// 连接FTP,并进入当前的path

public void connect() throws IOException {
if (client == null) {
client = new FtpClient(host, port);
client.login(username, password);
client.binary();
client.cd(path);
}
else {
client.noop();
client.cd(path);
}
}

// 关闭FTP

public void close() throws IOException {
if (client != null) {
client.closeServer();
client=null;
}
}

// 获得FTPClient类,可以直接对其操作

public FtpClient getClient() throws IOException {
if (client == null) {
connect();
}
return client;
}

// 返回当前目录的所有文件及文件夹

public ArrayList getFileList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.list()));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
if ((!((String) parseLine(s).get(8)).equals("."))&&(!((String) parseLine(s).get(8)).equals("..")))
al.add(s);
}
return al;
}

// 返回当前目录的文件名称

public ArrayList getNameList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.nameList(path)));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}

// 判断一行文件信息是否为目录

public boolean isDir(String line) {
return ( (String) parseLine(line).get(0)).indexOf("d") != -1;
}

public boolean isFile(String line) {
return!isDir(line);
}

// 处理getFileList取得的行信息

private ArrayList parseLine(String line) {
ArrayList s1 = new ArrayList();
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()) {
s1.add(st.nextToken());
}
return s1;
}

public String getFileName(String line) {
int i;
String filename=(String) parseLine(line).get(8);
for (i=9;i {
filename=filename+" "+((String) parseLine(line).get(i));
}
return filename;
}

public String getFileSize(String line) {
return (String) parseLine(line).get(4);
}

public String getFileDate(String line) {
ArrayList a = parseLine(line);
return (String) a.get(5) + " " + (String) a.get(6) + " " + (String) a.get(7);
}

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public void setPassword(String password) {
this.password = password;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPath() {
return path;
}

public void setPath(String path) throws IOException {
if (client == null)
this.path = path;
else {
client.cd(path);
}
}

public void setPort(int port) {
this.port = port;
}

}本回答被提问者采纳
第2个回答  推荐于2018-03-13
//遍历文件
public List getFileList(FtpClient ftpClient, String serverPath,
String prefix, String suffix) throws Exception {
List list = new ArrayList();

DataInputStream dis = new DataInputStream(ftpClient
.nameList(serverPath));
String filename = "";
while ((filename = dis.readLine()) != null) {

list.add(filename);

}

return list;
}

//删文件
public void deleteFileFromFtp(FtpClient ftpClient, String delFileName,
String serverPath) throws Exception {

ftpClient.cd(serverPath);
ftpClient.sendServer("dele " + delFileName + "\r\n");

}

删文件夹的话就先遍历再删

文件夹列表用apache提供的ftp包可以,sun的没看过本回答被网友采纳

java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容!
假如文件夹里面有文件的话,ftpclient根本删除不了文件夹,不像其他api可以自动递归删除,所以得先删除文件夹里面的文件,然后在删除文件夹,删除之前记得改变下工作目录 fileName是dirName里面的文件 ftpClient.changeWorkingDirectory(remoteDir+dirName)删除文件命令:ftpClient.deleteFile(fileName);删除完文件...

JAVA怎么实现删除远程FTP服务器上的某一文件
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(us...

java 在用 FtpClient 执行远程命令的时候 550 Delete operation failed...
删除权限不够?检查一下,文件夹的权限。可以在连接ftp服务器测试下。有的时候端口不通,也可能会出现这个问题

java里使用ftpClient的被动方式访问ftp服务器读取一系列文件夹,只有第...
你basePath应该有问题,basePath应该指向要删除目录的上一级目录.

java远程创建文件夹与文件
两种思路:1。直接用FILE类,但是有权限的问题。你要保证你登陆本地的帐户在远程电脑上也存在。2。通过流传递过去,可以参考JAR包-FILEUPLOAD。

java遍历ftp文件夹时,在FTPFile ff[] = ftpClient.listFiles()处一直...
success = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(url, port); \/\/如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);\/\/登录 reply = ftp.getReplyCode(); if (!FTPReply.isPositive...

怎么用Java实现FTP上传
ftpClient.closeServer();}System.out.println("已从服务器断开");return true;} catch (IOException e) {e.printStackTrace();return false;}}\/*** 检查文件夹在当前目录下是否存在* * @param dir*@return*\/private boolean isDirExist(String dir) {String pwd = "";try {pwd = ftpClient.pwd();ftp...

java 实现ftp上传如何创建文件夹?
return false;}}然后再利用ftpclient的makeDirectory方法创建文件夹public void createDir(String dirname){try{ftp.makeDirectory(dirname);System.out.println("在目标服务器上成功建立了文件夹: " + dirname);}catch(Exception ex){System.out.println(ex.getMessage());}}断开host连接 public void ...

java远程读写文件详解
public class RemoteFile { public static void main(String[] args) throws Exception { File remoteFile = new File("\/\/192.168.7.146\/test\/1.txt");\/\/ 192.168.7.146是对方机器IP,test是对方那个共享文件夹名字,如果没有共享是访问不到的 \/\/远程文件其实主要是地址,地址弄对了就和本地...

如何用cmd命令提示符查看远程运户? 如何删除远程运户?
ciadv.msc---索引服务程序 osk---打开屏幕键盘 odbcad32---ODBC数据源管理器 oobe\/msoobe \/a---检查XP是否激活 lusrmgr.msc---本机用户和组 logoff---注销命令 iexpress---木马捆绑工具,系统自带 Nslookup---IP地址侦测器 fsmgmt.msc---共享文件夹管理器 utilman---辅助工具管理器 gpedit.msc---组策略...

相似回答