1文件被锁定,例如ACCESS数据库,正在被使用,因此不能被清除,解决办法是登录虚拟主机管理平台,进入到主机管理中,把空间运行暂停,然后等数十 秒钟再清除就可以了。
2文件的索引坏了。在一台有上百万文件的服务器中,很有可能发生这种情况,这类文件用上面的方式无法删除。(解决方法:联系本司技术工程师,一般在24小时内解决)
3用户自己曾经对上层目录设定了不能写入的保护性 *** 作,解决方法:登陆用户控制后 台-自助管理-管理主机-打开相应目录的写 *** 作权限,然后用ftp登陆删除
4同一刻有其他人打开ftp在 *** 作,此时必须是其他 ftp *** 作关闭才能删除。
5文件名乱码或有空格,用ftp重命名该文件然后删除。功能是想根据FTP服务器上面的指定目录,删除目录下面所有文件,以下是测试代码。
ftpClientsendServer(DELE READMEtxt\r\n);
int reply = ftpClientreadServerResponse();
if(reply == 250){//success
Systemoutprintln(File delete success Filename is READMEtxt);}走到这里正常,reply返回值是250(有点奇怪,弄这么个你懂的数字),到这里单个文件测试正常。
接下来想要删除目录下所有文件,也就是需要取目录下列表,也就是说要用到nameList这个函数,不知道还有没有别的,我就知道这个,下面为实际想要的代码。
TelnetInputStream list = ftpClientnameList(fullPath);
ftpClientsendServer(DELE READMEtxt\r\n);
int reply = ftpClientreadServerResponse();
if(reply == 250){//success
Systemoutprintln(File delete success Filename is READMEtxt);}取完列表后再这里进行删除,下面的reply返回值始终是226,这个很奇怪,不管删除文件存在不存在,都是226,这样就午饭判断删除是否成功了。
请知道的高手帮帮忙,深表谢意!
------解决方案--------------------------------------------------------
FTP reply codes are described in RFC 959
Generally, reply code 226 or 250 is used after a successful file transfer, after LIST commands, and after NLST commands
Reply code 250 (but not 226) is used for a broader class of FTP commands, such as RNTO, DELE, MKD, RMD, CWD
RFC 959 describes the command sequences where a server is allowed to reply with either reply code 226 or reply code 250
可能是没删除成功,所以226,要删除成功的话,就会250
------解决方案--------------------------------------------------------
好吧 我接分了。
------解决方案--------------------------------------------------------
求代码看看~~~
一个人唱双簧。。。算是接分。。。假如文件夹里面有文件的话,ftpclient根本删除不了文件夹,不像其他api可以自动递归删除,所以得先删除文件夹里面的文件,然后在删除文件夹,
删除之前记得改变下工作目录 fileName是dirName里面的文件
ftpClientchangeWorkingDirectory(remoteDir+dirName)
删除文件命令:ftpClientdeleteFile(fileName);
删除完文件后更改目录ftpClientchangeWorkingDirectory(remoteDir)
删除文件夹命令:ftpClientremoveDirectory(dirName);FtpClient client = new FtpClient(ftp_ip, IntegerparseInt(ftp_port));
clientlogin(ftp_user, ftp_pwd);
clientbinary();
clientcd(thisftp_rdir);
String cmd = "DELE " + filename + "\r\n";
clientsendServer(cmd);命令 描述
ABOR 中断数据连接程序
ACCT <account> 系统特权帐号
ALLO <bytes> 为服务器上的文件存储器分配字节
APPE <filename> 添加文件到服务器同名文件
CDUP <dir path> 改变服务器上的父目录
CWD <dir path> 改变服务器上的工作目录
DELE <filename> 删除服务器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目录则列出文件列表
MODE <mode> 传输模式(S=流模式,B=块模式,C=压缩模式)
MKD <directory> 在服务器上建立指定目录
NLST <directory> 列出指定目录内容
NOOP 无动作,除了来自服务器上的承认
PASS <password> 系统登录密码
PASV 请求服务器等待数据连接
PORT <address> IP 地址和两字节的端口 ID
PWD 显示当前工作目录
QUIT 从 FTP 服务器上退出登录
REIN 重新初始化登录状态连接
REST <offset> 由特定偏移量重启文件传递
RETR <filename> 从服务器上找回(复制)文件
RMD <directory> 在服务器上删除指定目录
RNFR <old path> 对旧路径重命名
RNTO <new path> 对新路径重命名
SITE <params> 由服务器提供的站点特殊参数
SMNT <pathname> 挂载指定文件结构
STAT <directory> 在当前程序或目录上返回信息
STOR <filename> 储存(复制)文件到服务器上
STOU <filename> 储存文件到服务器名称上
STRU <type> 数据结构(F=文件,R=记录,P=页面)
SYST 返回服务器使用的 *** 作系统
TYPE <data type> 数据类型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系统登录的用户名
这就是FTP协议的命令集,是有删除指令的,我们老师以前让我们自己对照着自己编写过FTP协议,删除文件时候不分文件或者文件夹的,只要路径正确就可以删除,跟你电脑上点右键删除东西一样,如果是文件夹,内部所有也都会删除的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)