-
apache commons-net ftpClient listFiles方法诡异问题5
问题:使用ftpClient listFiles方法来判断文件的存在性,代码如上,自己的测试机上是ok的,但现网出现不稳定现象,2000个路径验证,循环验证,第一次出现十几个 验证不存在(其实文件存在,权限也没问题),第二次再验证,不存在的个数会增加,以此类推,但过几分钟,再执行验证,不存在的个数又会降下来,感觉很诡异。
public static boolean fileExist(String filepath) { FTPClient ftpClient = ftpContext.get(); String path = ""; if(filepath.startsWith("/")) { path = filepath.substring(1,filepath.length()); } else { path = filepath; } logger.warn("this full file path is ["+FtpUtil.currentWorkspace(false)+"/"+path+"] "); try { path = new String(path.getBytes(ENCODE_TYPE),"ISO-8859-1") ; } catch (UnsupportedEncodingException e1) { logger.error(e1.getMessage()); } // filepath该路径对应的文件数组 FTPFile[] files = null; try { files = ftpClient.listFiles(path, new FTPFileFilter() { public boolean accept(FTPFile ftpFile) { return ftpFile.isFile(); } } ); } catch (IOException e) { logger.error(e.getMessage(), e); } // 文件数组为空或长度小于等于0,代表文件不存在 if(files == null || files.length <= 0) { return false; } return true; }
麻烦各位给点建议,谢谢啦^_^!
2012年8月14日 00:03
3个答案 按时间排序 按投票排序
-
我之前也写过类似的,最后尝试直接使用listFile的入参为全路径测试,貌似是可以的,不妨试试,代码如下:
public static boolean exists(String path) { FTPClient client = ftpContext.get() ; if(client == null) { return false ; } try { FTPFile[] files = client.listFiles(ROOT_PATH.get() + new String(path.getBytes(ENCODE_TYPE),"ISO-8859-1")) ; return files.length > 0 ; } catch (IOException e) { logger.error("Exception occured when check the FTP File["+path+"] is exist : " + e.getMessage()) ; } return false ; }
2012年8月22日 16:30
相关推荐
此外,还有例如listFiles()用于获取远程目录列表,changeWorkingDirectory()切换当前工作目录等,满足了FTP交互的各种需求。 二、FTP传输模式 FTP支持两种主要的传输模式:ASCII模式和二进制模式。在Apache ...
此外,还可以使用`listFiles()`来获取服务器目录中的文件列表,或者`changeWorkingDirectory()`改变当前工作目录。 然而,需要注意的是,如果在JDK 1.7以上的版本中使用这个库,可能会遇到一些方法的变更。由于Java...
通过FTPClient的listFiles()方法,我们可以获取当前工作目录下的文件和目录列表。FTPFile对象提供了丰富的属性,如文件名、大小、日期、类型等,方便我们进行文件管理和筛选。 四、文件上传与下载 Apache Commons ...
implementation 'org.apache.commons:commons-net:3.6' // 使用最新版本替代3.3 } ``` 然后,我们需要创建一个FTP客户端实例并配置连接参数,如服务器地址、端口号、用户名和密码。以下是一个简单的FTP连接示例: ...
2. **目录操作**:`FTPClient`提供了`changeWorkingDirectory`方法来切换当前工作目录,`listDirectories`和`listFiles`方法用于列出目录及其内容。 3. **文件上传**:`storeFile`方法用于上传文件到服务器,需要...
- 列出目录:使用listFiles()方法获取目录下的文件和子目录列表。 - 改变当前工作目录:使用changeWorkingDirectory()方法。 ```java FTPFile[] files = client.listFiles(); for (FTPFile file : files) { ...
7. **下载文件**:`FTPFile[] files = client.listFiles("remoteDirectory");` 获取远程目录下的文件,然后使用`retrieveFile()`方法下载。 8. **处理日志**:Apache Commons Net允许开发者控制日志级别,以便记录...
4. **目录管理**:`FTPClient.changeWorkingDirectory()`可切换当前工作目录,`FTPClient.listDirectories()`和`FTPClient.listFiles()`分别用于获取目录列表和文件列表。 5. **日志输出**:Apache Commons Net支持...
4. **文件操作**:FTPClient提供了众多方法来处理文件,如listFiles()用于获取目录列表,retrieveFile()用于下载文件,storeFile()用于上传文件。 5. **文件传输模式**:FTP支持ASCII和二进制两种传输模式。使用...
`commons-net-3.0.1-bin.tar.gz` 是一个包含Apache Commons Net库的压缩文件,主要用于Java开发中处理各种网络协议,特别是FTP(文件传输协议)操作。这个库是Apache软件基金会的一个开源项目,提供了丰富的类和方法...
7. **目录操作**:使用`changeWorkingDirectory()`, `listNames()`, `listFiles()`等方法切换工作目录、获取目录列表。 8. **断开连接**:完成所有操作后,调用`disconnect()`断开与FTP服务器的连接。 在实际开发...
3. **目录操作**:你可以使用`changeWorkingDirectory()`方法切换当前工作目录,`listDirectories()`和`listFiles()`方法获取目录和文件信息。 4. **设置传输模式**:`FTPClient`支持主动模式和被动模式,可以通过`...
Apache Commons Net库中的`FTPClient`类是Java中用于与FTP服务器进行通信的重要工具。它封装了所有必要的功能,使得用户能够方便地上传、下载、列出远程目录中的文件,以及执行其他FTP操作。这个类继承自`Socket...
4. **目录操作**:`changeWorkingDirectory(directory)`允许切换当前工作目录,`printWorkingDirectory()`返回当前目录,`listDirectories()`和`listFiles()`则分别用于获取目录和文件列表。 5. **文件和权限管理**...
在实际应用中,开发者通常会利用该库提供的FTPClient类来建立FTP连接,执行各种FTP命令,如listFiles()用于获取远程目录文件列表,retrieveFile()用于下载文件,storeFile()用于上传文件。 标签“源码”暗示了文章...
本文将详细讲解三种常用的FTP客户端库——Apache.FTPClient、ftp4j及jftp,并以Apache.FTPClient为例,深入探讨其使用方法。 #### 一、Apache.FTPClient简介 Apache Commons Net是Apache项目下的一个开源工具包,...
FTPFile[] files = ftpClient.listFiles(); for (FTPFile file : files) { System.out.println(file.getName()); } ftpClient.makeDirectory("newDirectory"); boolean deleteSuccess = ftpClient.deleteFile(...
6. 获取文件信息:`FTPClient.listFiles(String dir)`返回服务器上指定目录下的文件和目录列表。 7. 保持会话状态:`FTPClient.setFileType(FTP.BINARY_FILE_TYPE)`设置文件传输类型为二进制,适用于大多数文件。...
"commons-net-3.6.jar"是Apache Commons Net库的一个版本,这个库为Java提供了丰富的网络协议支持,包括FTP。Apache Commons Net提供了FTPClient类,它是FTP协议的主要接口,可以用来执行各种FTP操作,如连接服务器...
3. **目录操作**:可以使用listNames、listFiles等方法获取服务器上的目录列表,mkdirs用于创建目录,deleteFile或delete用于删除文件或目录。 4. **文件上传和下载**:使用storeFile方法将本地文件上传到服务器,...