如何重写ChannelSftp.lstat方法,以便在Jsch中返回false而不是SftpException

时间:2018-07-19 14:04:39

标签: java jsch

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

0 个答案:

没有答案