java - 如何覆盖 ChannelSftp.lstat 方法以便在 Jsch 中返回 false 而不是 SftpException
问题描述
当前的定义ChannelSftp.lstat
如下。
public SftpATTRS lstat(String path) throws SftpException {
try {
((MyPipedInputStream)this.io_in).updateReadSide();
path = this.remoteAbsolutePath(path);
path = this.isUnique(path);
return this._lstat(path);
} catch (Exception var3) {
if (var3 instanceof SftpException) {
throw (SftpException)var3;
} else if (var3 instanceof Throwable) {
throw new SftpException(4, "", var3);
} else {
throw new SftpException(4, "");
}
}
}
private SftpATTRS _lstat(String path) throws SftpException {
try {
this.sendLSTAT(Util.str2byte(path, this.fEncoding));
ChannelSftp.Header header = new ChannelSftp.Header();
header = this.header(this.buf, header);
int length = header.length;
int type = header.type;
this.fill(this.buf, length);
if (type != 105) {
if (type == 101) {
int i = this.buf.getInt();
this.throwStatusError(this.buf, i);
}
throw new SftpException(4, "");
} else {
SftpATTRS attr = SftpATTRS.getATTR(this.buf);
return attr;
}
} catch (Exception var6) {
if (var6 instanceof SftpException) {
throw (SftpException)var6;
} else if (var6 instanceof Throwable) {
throw new SftpException(4, "", var6);
} else {
throw new SftpException(4, "");
}
}
}
由于我对java世界很陌生,我想知道我们如何覆盖ChannelSftp.lstat
方法,以便在文件不存在时返回false(ChannelSftp.SSH_FX_NO_SUCH_FILE
)以及在所有其他情况下(对于文件不存在以外的所有异常)抛出SftpException
自身.
解决方案
推荐阅读
- jenkins - 工作限制插件,正则表达式(工作名称)
- python - Django:CharField 的不支持查找“case_exact”或不允许加入该字段
- ios - 如何将 linphone ios 背景颜色白色更改为另一种?
- clojure - Clojure pedestal.io 代码在 IntelliJ 中未解析
- android - 在 Roboelectric 单元测试中忽略与 firebase 相关的异常
- apache-spark - 将 Dataframe 转换为 Json 数组
- arangodb - 我们可以在 arangodb 的 _key 列上添加一个额外的索引吗
- c++ - 哈希表实现(使用数组)
- azure - Azure 逻辑应用是否支持 JSON 架构验证中的 oneOf、anyOf
- python - 使用 BeautifulSoup 从 html 中提取除 script 标签内容外的文本