我有一个用于验证FTP目录的API,如下所示:
public boolean validateDirectory(FtpLocation ftpLocation) throws CustomException{
FTPClient client = new FTPClient();
try {
client.connect(ftpLocation.getSystem(), Integer.parseInt(ftpLocation.getPort()));
client.login(ftpLocation.getUser(), ftpLocation.getPassword());
client.changeWorkingDirectory(ftpLocation.getDirPath());
int returnCode = client.getReplyCode();
if (returnCode == 550) {
LOG.error("Directory ["+ ftpLocation.getDirPath() + "] does not exist");
return false;
}
File dir = new File(ftpLocation.getDirPath());
if(dir!=null){
if (!dir.canRead()) {
LOG.error("Directory ["+ ftpLocation.getDirPath() + "] does not have read permission");
return false;
}
}
return true;
} catch (NumberFormatException | IOException e) {
LOG.error("Failed to validate Source Directory Path [" + ftpLocation.getDirPath() + "]", e);
throw new CustomException("Failed to validate Source Directory Path [" + ftpLocation.getDirPath() + "]", e);
} finally {
try {
client.disconnect();
} catch (IOException e) {
LOG.warn("Error occured while disconnecting FTPClient", e);
}
}
}
07:41:59.799 [pool-2-thread-1] ERROR c.n.d.m.b.f.Validator - Directory [/source] does not have read permission
07:42:48.801 [pool-2-thread-1] ERROR c.n.d.m.b.f.Validator - Directory [/source] does not have read permission
07:43:27.093 [pool-2-thread-1] ERROR c.n.d.m.b.f.Validator - Directory [/source] does not exist
07:44:00.215 [pool-2-thread-1] ERROR c.n.d.m.b.f.Validator - Directory [/source] does not exist
注:骆驼版本为2.12.1
我找到了解决问题的方法,如下所示:
public void validateDirectory(FtpLocation ftpLocation) throws CustomException {
FTPClient client = new FTPClient();
try {
client.connect(ftpLocation.getSystem(), Integer.parseInt(ftpLocation.getPort()));
client.login(ftpLocation.getUser(), ftpLocation.getPassword());
client.enterLocalPassiveMode();
client.changeWorkingDirectory(ftpLocation.getDirPath());
int returnCode = client.getReplyCode();
LOG.debug("FTP return code: "+ returnCode);
if (returnCode == 550) {
LOG.error("Directory ["+ ftpLocation.getDirPath() + "] does not exist");
throw new CustomException("Directory ["+ ftpLocation.getDirPath() + "] does not exist");
}
String targetDir = client.printWorkingDirectory();
client.cdup();
targetDir = StringUtils.substring(targetDir, StringUtils.lastIndexOf(targetDir, File.separator) + 1);
FTPFile ftpFiles[] = client.listFiles();
for(FTPFile ftpFile : ftpFiles){
if(StringUtils.equals(ftpFile.getName(), targetDir) && !ftpFile.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION)){
LOG.error("No read permission for directory [" + ftpLocation.getDirPath() + "]");
throw new CustomException("No read permission for directory [" + ftpLocation.getDirPath() + "]");
}
}
} catch (NumberFormatException | IOException e) {
LOG.error("Failed to validate Source Directory Path [" + ftpLocation.getDirPath() + "]", e);
throw new CustomException("Failed to validate Source Directory Path [" + ftpLocation.getDirPath() + "]", e);
} finally {
try {
client.disconnect();
} catch (IOException e) {
LOG.warn("Error occured while disconnecting FTPClient", e);
}
}
}
然而,如果你有更好的解决方案,那么请张贴它。
本文向大家介绍如何使用Python检查目录的权限?,包括了如何使用Python检查目录的权限?的使用技巧和注意事项,需要的朋友参考一下 您可以使用os.access(path,mode)来检查目录权限以及读取,写入和执行权限的模式。为了能够写,您还需要检查执行权限。例如, 您还可以遵循一个通用的Python习惯用法:寻求宽容比获得许可要容易。按照该习惯用法,您应该尝试写入有问题的目录,如果没有权限
此代码用于测试应用程序是否具有权限,如果您具有权限,则返回true,否则返回false。 错误: PID:25504 java.lang.NullPointerException:试图在Android.Content.Context Android.Content.Content.Context.GetApplicationContext(view.java:21147)在Android.os.h
cmf_auth_check($userId, $name = null, $relation = 'or') 功能 检查用户权限 参数 $userId: int 要检查权限的用户 ID $name: string|array 需要验证的规则列表,支持逗号分隔的权限规则或索引数组 $relation:string 如果为 'or' 表示满足任一条规则即通过验证;如果为 'and'则表示需满足所有
创建目录权限 如果你想创建一个目录并授予777权限,你需要怎么做?查看Go的API文档我们可以这样写。 源文件为mkdir.go。 package main import ( "fmt" "os" ) func main() { err := os.MkdirAll("/tmp/gotest/", 0777) if err != nil { panic(er
问题内容: 我的小型实用程序应用程序通过GUI文件选择器要求用户提供输出目录。然后,经过一些处理,它会在此输出目录中创建很多文件。 我需要检查应用程序是否具有写访问权,以便它通知用户并且不继续进行处理(这可能需要很长时间) 我的第一次尝试是 java.io.File* 的 canWrite() 方法。但这是行不通的,因为它处理目录条目本身而不是其内容。我已经看到Windows XP文件夹的至少一个
读取目录 读取目录 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:读取目录 * * 程序会创建一个操作文件的函数并导出到msh命令列表 * 在函数