回答
(这是如果你使用的库,假设我不假思索地做出的SFTP一部分。)
我以为它ls(String path)
会接受的文件名;我目前无法检查。
如果没有,则不需要手动迭代;您可以使用选择器变体:
ls(String path, ChannelSftp.LsEntrySelector selector)
您可以通过
if [ -e FILE_NAME ] ; then
//do something
fi
或
if [ -d DIRNAME ]
的目录检查
或
if [ -l SYMLINK ]
的软链接
我希望这有助于
这里是一个远程机器http://www.jcraft.com/jsch/examples/Exec.java.html
上运行命令可以很好的运行ls
或消磨整个脚本的例子。这与将脚本复制到远程机器然后执行它相同。
这是我如何检查JSch中的目录存在。
注意:与此问题无关,但有些人可能会觉得它有用。
创建目录,如果目录不存在
ChannelSftp channelSftp = (ChannelSftp)channel;
String currentDirectory=channelSftp.pwd();
String dir="abc";
SftpATTRS attrs=null;
try {
attrs = channelSftp.stat(currentDirectory+"/"+dir);
} catch (Exception e) {
System.out.println(currentDirectory+"/"+dir+" not found");
}
if (attrs != null) {
System.out.println("Directory exists IsDir="+attrs.isDir());
} else {
System.out.println("Creating dir "+dir);
channelSftp.mkdir(dir);
}
这是正确的解决方案,因为它在名称中找到带有'*'的文件→没有匹配! – 2015-11-25 15:49:56
至少是相关的,我特意来这里检查目录,而不是文件。我试图弄清楚传递给我的程序的参数是否引用远程系统上的目录或文件,所以谢谢。 – gravy21 2018-02-01 15:10:38
你也可以做这样的事情:
try {
channelSftp.lstat(name);
} catch (SftpException e){
if(e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE){
// file doesn't exist
} else {
// something else went wrong
throw e;
}
}
如果你的东西做一个LSTAT不存在你有SftpExecption一个2的id,否则你会得到关于该文件的信息。
其实在我的项目ls
工作没有循环。我只是传递给带有文件名的ls
调用路径。
private static boolean exists(ChannelSftp channelSftp, String path) {
Vector res = null;
try {
res = channelSftp.ls(path);
} catch (SftpException e) {
if (e.id == SSH_FX_NO_SUCH_FILE) {
return false;
}
log.error("Unexpected exception during ls files on sftp: [{}:{}]", e.id, e.getMessage());
}
return res != null && !res.isEmpty();
}
例如有与URL sftp://[email protected]/path/to/some/random/folder/file.txt
文件file.txt
。我传递给函数exists
path
as /path/to/some/random/folder/file.txt
- 1. 有没有办法判断一个活动是否开始?
- 2. 有没有办法判断所有验证器是否满足?
- 3. 有没有办法判断x-sendfile是否已经启动?
- 4. 有没有办法判断是否显示软键盘?
- 5. 有没有办法判断ReactElement是否呈现“null”?
- 6. 有没有办法判断Safari是否全屏? (例如document.fullscreenElement)
- 7. 有没有办法判断电子邮件是否有OneDrive附件?
- 8. 有没有办法检查ansicon.exe是否存在,而不使用CMake运行它?
- 9. 有没有办法通过编程来判断系统是否启用触摸?
- 10. 有没有办法判断宏展开是否会看到词法上下文?
- 11. 有没有办法判断一个枚举是否只有一个,多个或不设置标志?
- 12. 有没有简单的方法来判断文件流是否打开了目录而不是文件?
- 13. 有没有办法判断sdcard是否已安装或根本没有安装?
- 14. 有没有办法判断用户在使用手机时是否正在使用您的应用程序?
- 15. 有没有办法告诉ocamlbuild运行我的文件,而不是只生成一个可执行文件?
- 16. PHP:判断文件是否存在?
- 17. 有没有办法通过编程来判断FastMM是否没有释放特定的内存块?
- 18. 有没有办法检查文件是否在使用
- 19. 有没有办法判断Android MediaPlayer目前是否正在播放歌曲?
- 20. 有没有办法判断有线耳机是否连接到手机
- 21. 有没有办法判断一个Web应用程序是否从主屏幕图标启动?的iOS/Android的?
- 22. 有没有办法判断某些代码是否在Silverlight单元测试框架内执行?
- 23. 有没有办法判断一个与ImageView相关的Drawable是Vectorial?
- 24. 有没有办法判断一个unicode字符是一个控件,alpha,数字还是符号?
- 25. 如何判断文件是否在使用Perl的远程文件系统上?
- 26. 调试时,有没有办法判断一个对象是不是一个实例?
- 27. 有什么办法可以判断UIPickerView是否在旋转?
- 28. 有没有办法检查代码是否在TransactionScope中执行?
- 29. 有没有办法找出.js文件是否使用jquery sintax?
- 30. Objective-C有没有办法判断对象是否设置为autorelease?
我以为你可以通过Jsch发送命令。 – Nishant 2012-08-15 12:07:18
你说得对,我假设OP使用库的sftp部分 - 对不起! – 2012-08-15 12:08:46