# fsys.unrar 库模块帮助文档

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.unrar("rar压缩文件路径","解压目录","密码",是否解压) <a id="fsys.unrar" href="#fsys.unrar">&#x23;</a>
创建RAR文件对象  
不存在的目录自动创建  
成功返回unrar对象,失败返回:null,错误信息,错误代码

### fsys.unrar() <a id="fsys.unrar" href="#fsys.unrar">&#x23;</a>
[返回对象:fsysUnrarObject](#fsysUnrarObject)

## fsys.unrar 成员列表 <a id="fsys.unrar" href="#fsys.unrar">&#x23;</a>

### fsys.unrar.count("rar压缩文件路径","密码") <a id="fsys.unrar.count" href="#fsys.unrar.count">&#x23;</a>
以只读模式打开压缩包  
并计算压缩包内文件总数

### fsys.unrar.errMessage <a id="fsys.unrar.errMessage" href="#fsys.unrar.errMessage">&#x23;</a>
错误代码、错误信息对照表。

### fsys.unrar.extract("rar压缩文件路径","解压目录","密码",进度回调函数) <a id="fsys.unrar.extract" href="#fsys.unrar.extract">&#x23;</a>

```aardio
fsys.unrar.extract("rar压缩文件路径","解压目录","密码"  
	,function(percent,totalSize,unpackSize,filename,rarHeader){  
		/*percent 为解压进度百分比，  
totalSize 为解压后总大小，math.size64 对象。  
unpackSize 为已解压大小，math.size64 对象。  
filename 为当前解压文件名。  
rarHeader 为当前 RAR 压缩头。  
函数返回 false 退出解压，无返回值或返回 true 继续操作*/  
	}  
)
```

### fsys.unrar.extract("字符串参数") <a id="fsys.unrar.extract" href="#fsys.unrar.extract">&#x23;</a>
解压文件到压缩包所在目录  
成功返回解压目录  
成功返回解压目录,失败返回:false,错误信息,错误代码

### fsys.unrar.size64("rar压缩文件路径","密码") <a id="fsys.unrar.size64" href="#fsys.unrar.size64">&#x23;</a>
以只读模式打开压缩包  
并返回解压后文件大小

### fsys.unrar.size64() <a id="fsys.unrar.size64" href="#fsys.unrar.size64">&#x23;</a>
[返回对象:mathSize64Object](https://www.aardio.com/zh-cn/docs/library-reference/math/_.html#mathSize64Object)

## RARHeaderDataObject 成员列表 <a id="RARHeaderDataObject" href="#RARHeaderDataObject">&#x23;</a>

### RARHeaderDataObject.ArcName <a id="RARHeaderDataObject.ArcName" href="#RARHeaderDataObject.ArcName">&#x23;</a>
压缩卷名

### RARHeaderDataObject.CmtBuf <a id="RARHeaderDataObject.CmtBuf" href="#RARHeaderDataObject.CmtBuf">&#x23;</a>
文件注释缓冲区

### RARHeaderDataObject.CmtBufSize <a id="RARHeaderDataObject.CmtBufSize" href="#RARHeaderDataObject.CmtBufSize">&#x23;</a>
注释的缓冲区大小

### RARHeaderDataObject.CmtSize <a id="RARHeaderDataObject.CmtSize" href="#RARHeaderDataObject.CmtSize">&#x23;</a>
实际注释大小

### RARHeaderDataObject.CmtState <a id="RARHeaderDataObject.CmtState" href="#RARHeaderDataObject.CmtState">&#x23;</a>
注释状态

### RARHeaderDataObject.FileAttr <a id="RARHeaderDataObject.FileAttr" href="#RARHeaderDataObject.FileAttr">&#x23;</a>
文件属性

### RARHeaderDataObject.FileCRC <a id="RARHeaderDataObject.FileCRC" href="#RARHeaderDataObject.FileCRC">&#x23;</a>
压缩之前文件的CRC值

### RARHeaderDataObject.FileName <a id="RARHeaderDataObject.FileName" href="#RARHeaderDataObject.FileName">&#x23;</a>
文件名

### RARHeaderDataObject.FileTime <a id="RARHeaderDataObject.FileTime" href="#RARHeaderDataObject.FileTime">&#x23;</a>
按照MS DOS格式输出的日期和时间

### RARHeaderDataObject.Flags <a id="RARHeaderDataObject.Flags" href="#RARHeaderDataObject.Flags">&#x23;</a>
输出文件标志

### RARHeaderDataObject.HostOS <a id="RARHeaderDataObject.HostOS" href="#RARHeaderDataObject.HostOS">&#x23;</a>
压缩文件的宿主操作系统

### RARHeaderDataObject.Method <a id="RARHeaderDataObject.Method" href="#RARHeaderDataObject.Method">&#x23;</a>
压缩方式

### RARHeaderDataObject.PackSize <a id="RARHeaderDataObject.PackSize" href="#RARHeaderDataObject.PackSize">&#x23;</a>
分卷大小

### RARHeaderDataObject.PackSizeHigh <a id="RARHeaderDataObject.PackSizeHigh" href="#RARHeaderDataObject.PackSizeHigh">&#x23;</a>
分卷大小高位

### RARHeaderDataObject.UnpSize <a id="RARHeaderDataObject.UnpSize" href="#RARHeaderDataObject.UnpSize">&#x23;</a>
解压后的文件大小

### RARHeaderDataObject.UnpSizeHigh <a id="RARHeaderDataObject.UnpSizeHigh" href="#RARHeaderDataObject.UnpSizeHigh">&#x23;</a>
解压后的文件大小高位

### RARHeaderDataObject.UnpVer <a id="RARHeaderDataObject.UnpVer" href="#RARHeaderDataObject.UnpVer">&#x23;</a>
解压需要的Rar版本。按照10 * Major version + minor version格式给出

## fsysUnrarObject 成员列表 <a id="fsysUnrarObject" href="#fsysUnrarObject">&#x23;</a>

### fsysUnrarObject.close() <a id="fsysUnrarObject.close" href="#fsysUnrarObject.close">&#x23;</a>
关闭文件

### fsysUnrarObject.comment <a id="fsysUnrarObject.comment" href="#fsysUnrarObject.comment">&#x23;</a>
注释，UTF-8 编码

### fsysUnrarObject.count() <a id="fsysUnrarObject.count" href="#fsysUnrarObject.count">&#x23;</a>
返回压缩包内文件总数

### fsysUnrarObject.eachHeader( ) <a id="fsysUnrarObject.eachHeader" href="#fsysUnrarObject.eachHeader">&#x23;</a>

```aardio
for(filename,rarHeader in fsysUnrarObject.eachHeader() ){ 
 	if(  ! fsysUnrarObject.extractNext(opMode) ){
 	 	return false;
 	}
};
```

### fsysUnrarObject.eachHeader() <a id="fsysUnrarObject.eachHeader" href="#fsysUnrarObject.eachHeader">&#x23;</a>
[返回对象:RARHeaderDataObject](#RARHeaderDataObject)

### fsysUnrarObject.extractNext() <a id="fsysUnrarObject.extractNext" href="#fsysUnrarObject.extractNext">&#x23;</a>
解压并查找下一个文件  
失败返回:null,错误信息,错误代码  
成功返回true

### fsysUnrarObject.lastErrorCode <a id="fsysUnrarObject.lastErrorCode" href="#fsysUnrarObject.lastErrorCode">&#x23;</a>
最后发生的错误信息

### fsysUnrarObject.lastErrorMessage <a id="fsysUnrarObject.lastErrorMessage" href="#fsysUnrarObject.lastErrorMessage">&#x23;</a>
最后发生的错误代码

### fsysUnrarObject.readHeader() <a id="fsysUnrarObject.readHeader" href="#fsysUnrarObject.readHeader">&#x23;</a>
读取下一个文件头,  
成功返回文件头,文件名  
失败返回:null,错误信息,错误代码  
解压完成返回空

[返回对象:RARHeaderDataObject](#RARHeaderDataObject)

### fsysUnrarObject.savePath <a id="fsysUnrarObject.savePath" href="#fsysUnrarObject.savePath">&#x23;</a>
返回解压目录

### fsysUnrarObject.setCallback( 回调函数 ) <a id="fsysUnrarObject.setCallback" href="#fsysUnrarObject.setCallback">&#x23;</a>

```aardio
fsysUnrarObject.setCallback(  
	function( msg,userData,pData,dataSize){  
		if(msg==1/*UCM_PROCESSDATA*/){  

		}  
		elseif(msg==4/*UCM_NEEDPASSWORDW*/){  
			raw.copy(pData,string.toUtf16("password"));  
		}  
	}   
)
```

### fsysUnrarObject.size64() <a id="fsysUnrarObject.size64" href="#fsysUnrarObject.size64">&#x23;</a>
解压后大小,math.size64对象  

[返回对象:mathSize64Object](https://www.aardio.com/zh-cn/docs/library-reference/math/_.html#mathSize64Object)

### fsysUnrarObject.skipNext() <a id="fsysUnrarObject.skipNext" href="#fsysUnrarObject.skipNext">&#x23;</a>
查找下一个文件  
失败返回:null,错误信息,错误代码  
成功返回true

### fsysUnrarObject.testNext() <a id="fsysUnrarObject.testNext" href="#fsysUnrarObject.testNext">&#x23;</a>
测试并查找下一个文件  
失败返回:null,错误信息,错误代码  
成功返回true

### 自动完成常量
_ERAR_BAD_ARCHIVE=0xD  
_ERAR_BAD_DATA=0xC  
_ERAR_ECLOSE=0x11  
_ERAR_ECREATE=0x10  
_ERAR_END_ARCHIVE=0xA  
_ERAR_EOPEN=0xF  
_ERAR_EREAD=0x12  
_ERAR_EWRITE=0x13  
_ERAR_MISSING_PASSWORD=0x16  
_ERAR_NO_MEMORY=0xB  
_ERAR_SMALL_BUF=0x14  
_ERAR_UNKNOWN=0x15  
_ERAR_UNKNOWN_FORMAT=0xE  
_RAR_DLL_VERSION=5  
_RAR_EXTRACT=2  
_RAR_OM_EXTRACT=1  
_RAR_OM_LIST=0  
_RAR_OM_LIST_INCSPLIT=2  
_RAR_SKIP=0  
_RAR_TEST=1  
_RAR_VOL_ASK=0  
_RAR_VOL_NOTIFY=1  
