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
方法,以便在文件不存在(ChannelSftp.SSH_FX_NO_SUCH_FILE
)以及在所有其他情况下返回false。 (除文件以外的所有异常不存在)本身抛出SftpException
。