import net.lingala.zip4j.model.FileHeader; //导入方法依赖的package包/类
private static void setFileAttributes(FileHeader fileHeader, File file, boolean setReadOnly,
boolean setHidden, boolean setArchive, boolean setSystem) throws ZipException {
if (fileHeader == null) {
throw new ZipException("invalid file header. cannot set file attributes");
}
byte[] externalAttrbs = fileHeader.getExternalFileAttr();
if (externalAttrbs == null) {
return;
}
int atrrib = externalAttrbs[0];
switch (atrrib) {
case InternalZipConstants.FILE_MODE_READ_ONLY:
if (setReadOnly) Zip4jUtil.setFileReadOnly(file);
break;
case InternalZipConstants.FILE_MODE_HIDDEN:
case InternalZipConstants.FOLDER_MODE_HIDDEN:
if (setHidden) Zip4jUtil.setFileHidden(file);
break;
case InternalZipConstants.FILE_MODE_ARCHIVE:
case InternalZipConstants.FOLDER_MODE_ARCHIVE:
if (setArchive) Zip4jUtil.setFileArchive(file);
break;
case InternalZipConstants.FILE_MODE_READ_ONLY_HIDDEN:
if (setReadOnly) Zip4jUtil.setFileReadOnly(file);
if (setHidden) Zip4jUtil.setFileHidden(file);
break;
case InternalZipConstants.FILE_MODE_READ_ONLY_ARCHIVE:
if (setArchive) Zip4jUtil.setFileArchive(file);
if (setReadOnly) Zip4jUtil.setFileReadOnly(file);
break;
case InternalZipConstants.FILE_MODE_HIDDEN_ARCHIVE:
case InternalZipConstants.FOLDER_MODE_HIDDEN_ARCHIVE:
if (setArchive) Zip4jUtil.setFileArchive(file);
if (setHidden) Zip4jUtil.setFileHidden(file);
break;
case InternalZipConstants.FILE_MODE_READ_ONLY_HIDDEN_ARCHIVE:
if (setArchive) Zip4jUtil.setFileArchive(file);
if (setReadOnly) Zip4jUtil.setFileReadOnly(file);
if (setHidden) Zip4jUtil.setFileHidden(file);
break;
case InternalZipConstants.FILE_MODE_SYSTEM:
if (setReadOnly) Zip4jUtil.setFileReadOnly(file);
if (setHidden) Zip4jUtil.setFileHidden(file);
if (setSystem) Zip4jUtil.setFileSystemMode(file);
break;
default:
//do nothing
break;
}
}