Я хочу прочитать расширенные атрибуты файла, используя com.jcraft.JSch 0.1.55 (файл находится на SFTP-сервере). Я знаю, что у класса SftpATTR
действительно есть метод
public String[] getExtended()
но в моем случае он возвращает ноль.
Я вижу это в этом коде
static SftpATTRS getATTR(Buffer buf){
SftpATTRS attr=new SftpATTRS();
attr.flags=buf.getInt();
if((attr.flags&SSH_FILEXFER_ATTR_SIZE)!=0){ attr.size=buf.getLong(); }
if((attr.flags&SSH_FILEXFER_ATTR_UIDGID)!=0){
attr.uid=buf.getInt(); attr.gid=buf.getInt();
}
if((attr.flags&SSH_FILEXFER_ATTR_PERMISSIONS)!=0){
attr.permissions=buf.getInt();
}
if((attr.flags&SSH_FILEXFER_ATTR_ACMODTIME)!=0){
attr.atime=buf.getInt();
}
if((attr.flags&SSH_FILEXFER_ATTR_ACMODTIME)!=0){
attr.mtime=buf.getInt();
}
if((attr.flags&SSH_FILEXFER_ATTR_EXTENDED)!=0){
int count=buf.getInt();
if(count>0){
attr.extended=new String[count*2];
for(int i=0; i<count; i++){
attr.extended[i*2]=Util.byte2str(buf.getString());
attr.extended[i*2+1]=Util.byte2str(buf.getString());
}
}
}
return attr;
}
последний оператор if отвечает за чтение расширенных атрибутов, но мне кажется, что он всегда оценивается как false, потому что
int flags=0;
а также
public static final int SSH_FILEXFER_ATTR_EXTENDED= 0x80000000;
Я не могу изменить флаги напрямую, потому что у его установщика нет общедоступного модификатора.
Есть ли другой способ изменить флаги или как-то прочитать расширенные атрибуты?