labview 如何在ftp服务器上新建文件夹、删除ftp服务器上的文件?
C:\Program Files (x86)\National Instruments\LabVIEW 2015\vilib\FTP
FTP1里有DELE命令,FTP2里有命令行,可以自己编写
命令 描述
ABOR 中断数据连接程序
ACCT <account> 系统特权帐号
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协议,删除文件时候不分文件或者文件夹的,只要路径正确就可以删除,跟你电脑上点右键删除东西一样,如果是文件夹,内部所有也都会删除的。
一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,
(1):Java FTP主文件代码:
package ftpDemo;
import javaioDataOutputStream;
import javaioInputStream;
import javaioOutputStream;
import sunnetTelnetInputStream;
import sunnetTelnetOutputStream;
import sunnetftpFtpClient;
public class ftpUtil {
// 上传文件至FTP通用方法
public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){
try {
String ftpHost = kmConfiggetFtpHost();
int port = kmConfiggetFtpPort();
String userName = kmConfiggetFtpUser();
String passWord = kmConfiggetFtpPassword();
String path = kmConfiggetFtpPath();
FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
ftpClientlogin(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
ftpClientbinary();
ftpClientcd(path);// path为FTP服务器上保存上传文件的路径。
TelnetOutputStream telnetOut = ftpClientput(fileName);// fileName为上传的文件名
DataOutputStream dataOut = new DataOutputStream(telnetOut);
byte buffer[] = new byte[ ];
int count = ;
while ((count = isread(buffer)) != -) {
dataOutwrite(buffer, , count);
}
telnetOutclose();
dataOutclose();
ftpClientcloseServer();
} catch (Exception e) {
Systemoutprintln("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");
}
}
// 删除文件至FTP通用方法
public static void deleteFileFtp(KmConfig kmConfig,String fileName){
try {
String ftpHost = kmConfiggetFtpHost();
int port = kmConfiggetFtpPort();
String userName = kmConfiggetFtpUser();
String passWord = kmConfiggetFtpPassword();
String path = kmConfiggetFtpPath();
FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
ftpClientlogin(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
ftpClientbinary();
ftpClientcd(path);// path为FTP服务器上保存上传文件的路径。
try {
ftpClientsendServer("dele " + fileName + "\r\n");
} catch (Exception e) {
Systemoutprintln("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");
}
ftpClientcloseServer();
} catch (Exception e) {
Systemoutprintln("删除文件失败!");
}
}
// 下载ftp文件
public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){
try {
String ftpHost = kmConfiggetFtpHost();
int port = kmConfiggetFtpPort();
String userName = kmConfiggetFtpUser();
String passWord = kmConfiggetFtpPassword();
String path = kmConfiggetFtpPath();
FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
ftpClientlogin(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
ftpClientbinary();
ftpClientcd(path);// path为FTP服务器上保存上传文件的路径。
try {
TelnetInputStream in = ftpClientget(fileName);
byte[] bytes = new byte[];
int cnt=;
while ((cnt=inread(bytes,,byteslength)) != -) {
outputStreamwrite(bytes, , cnt);
}
outputStreamclose();
inclose();
} catch (Exception e) {
ftpClientcloseServer();
eprintStackTrace();
}
ftpClientcloseServer();
} catch (Exception e) {
Systemoutprintln("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");
}
}
//在ftp服务器上传件文件夹
public boolean createDir(String path,FtpClient ftpClient) throws Exception{
//进入到home文件夹下
ftpClientcd("/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>
// ftpclientsendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>
// ftpclientreadServerResponse一定要在sendServer后调用<br>
// nameList("/test")获取指目录下的文件列表<br>
// XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>
// XRMD删除目录<br>
// DELE删除文件<br>
//通过远程命令 穿件一个files文件夹
ftpClientsendServer("MKD "+ path + "\r\n");
//这个方法必须在 这两个方法中间调用 否则 命令不管用
ftpClientbinary();
ftpClientreadServerResponse();
return false;
}
/
检查文件夹是否存在
@param dir
@param ftpClient
@return
/
public boolean isDirExist(String dir, FtpClient ftpClient) {
try {
ftpClientcd(dir);
} catch (Exception e) {
return false;
}
return true;
}
}
(2):KmConfigjava代码如下:定义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):下面是测试代码:
FTP 无法删除文件的分析及处理办法
1文件被锁定,例如ACCESS数据库,正在被使用,因此不能被清除,解决办法是登录虚拟主机管理平台,进入到主机管理中,把空间运行暂停,然后等数十 秒钟再清除就可以了。
2文件的索引坏了。在一台有上百万文件的服务器中,很有可能发生这种情况,这类文件用上面的方式无法删除。(解 决方法:联系本司技术工程师,一般在24小时内解决)
3用户自己曾经对上层目录设定了不能写入的保护性操作,解决方法:登陆用户控制后 台-自助管理-管理主机-打开相应目录的写操作权限,然后用ftp登陆删除
4同一刻有其他人打开你的ftp在操作,此时必须是其他 ftp操作关闭才能删除
5文件名乱码或有空格,用ftp重命名该文件然后删除。
如果在FTP里面删除文件的话,基本上就不能够恢复了,但是你可以找一下服务器的备份文件,然后替换回去,如果你是使用虚拟服务器空间的话,也可以找一下您的服务商客服协助您恢复指定的文件。
也可以采用如下办法。
1、下载对应的数据恢复软件。
2、安装好软件,根据提示选择相应的恢复办法。
3、开始扫描,等待一段时间后,会出现丢失的文件,最后把文件保存好即可。
有用户反映在网络空间中通过连接FTP来上传文件资料,但是后来发现无法删除里面的文件夹,点击删除的话会出现没有反应,文件依然存在,或者无法删除的情况。如果大家在电脑系统中遇到了相同的问题,可以参考一下本教程中介绍的方法。
1、FTP正常登录,点击删除文件夹;
2、但会出现无法删除的情况,文件夹依旧存在;
3、点击顶部的菜单栏“网络”,勾选“显示FTP中的隐藏文件”;
4、开启隐藏文件功能之后,再次右击删除选中的文件夹;
5、等程序运行之后,就可以看到文件夹已经被正常删除了。
6、相关的设置也有可能位于“查看”——“过滤器”中;
7、在弹出窗口中,找到“服务器端过滤”,勾选“启用服务器端过滤服务器应用过滤”,并在下方远程过滤输入“-a”,点击确定。
按照以上步骤进行设置即可解决电脑中网络空间出现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
------解决方案--------------------------------------------------------
好吧 我接分了。
------解决方案--------------------------------------------------------
求代码看看~~~
一个人唱双簧。。。算是接分。。。
0条评论