# fsys.config 库模块帮助文档

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.config <a id="fsys.config" href="#fsys.config">&#x23;</a>
基于 fsys.table 的配置文件对象。  
fsys.config 对象用不以下划线开始的名字获取成员会返回 fsys.table 对象。  
fsys.table 可作为普通 table 对象使用，  
在线程退出时将会同步存储到文件中。  

fsys.table 并非实时读写，而是将配置读入内存。  
所以请不要多对象、多线程、多进程打开同一配置文件。  
这会导致多份不同步的配置写入存储设备时会相互覆盖。  

注意此对象不可跨线程传递。  
多线程可通过 winform 成员函数转发到界面线程操作配置文件即可，  
多进程可利用原子窗体、进程互斥体避免冲突

创建 fsys.config 对象。  
fsys.config 对象用不以下划线开始的名字获取成员会返回 fsys.table 对象

### fsys.config() <a id="fsys.config" href="#fsys.config">&#x23;</a>
[返回对象:fsysConfigObject](#fsysConfigObject)

### fsys.config(默认配置目录,备选配置目录) <a id="fsys.config" href="#fsys.config">&#x23;</a>
参数 @1 指定默认目录，省略则默认使用 "/config/" 目录。  
如果默认配置目录不存在，且指定了备选配置目录，  
则改用备选配置目录。否则自动创建默认配置目录。  
可用 io.appData 函数指定 %LocalAppData% 目录的子目录。  

使用非下划线开始的名字获取 fsys.config 对象成员时，  
返回指向配置目录下同名配置文件的 fsys.table 对象。  

一般只应当在主线程中有一个指向同一配置目录的 fsys.config 对象，  
以避免 fsys.table 指向同一个硬盘文件则保存时会相互覆盖

## fsysConfigObject 成员列表 <a id="fsysConfigObject" href="#fsysConfigObject">&#x23;</a>

### fsysConfigObject.* <a id="fsysConfigObject.any" href="#fsysConfigObject.any">&#x23;</a>
如果指定不以下划线开始的成员名称（只读不可写入），  
则返回当前配置目录下同名的文件同步表（fsys.table 对象）。  
这是一个可自动序列化到同名配置文件的表对象。  
仅序列化以字符串、数值为键的元素，  
仅序列化值为字符串、数值、buffer 以及定义了 _serialize 元方法的成员。  
循环引用的值转换为 null，序列化时忽略成员函数  
如果指定的成员名以下划线开始，则正常读写对应的属性值而非打开文件同步表。  
注意下划线开始的属于只读常量，设为非 null 值以后不可再修改。  

[返回对象:fsysTableObject](https://www.aardio.com/zh-cn/docs/library-reference/fsys/table.html#fsysTableObject)

### fsysConfigObject._cfgDir <a id="fsysConfigObject._cfgDir" href="#fsysConfigObject._cfgDir">&#x23;</a>
配置文件目录

### fsysConfigObject.get(key,defaultValue) <a id="fsysConfigObject.get" href="#fsysConfigObject.get">&#x23;</a>
自 default 配置文件读取参数 @key 指定键的值。  
如果值为 null 则返回可选参数 @defaultValue 指定的值。

### fsysConfigObject.saveAll() <a id="fsysConfigObject.saveAll" href="#fsysConfigObject.saveAll">&#x23;</a>
保存当前对象（fsys.config ）管理的所有文件同步表（fsys.table 对象）到文件。  
如果 fsys.table 对象调用 enableAutoSave(false) 禁用了自动保存，则 saveAll 调用对其无效。  
禁用自动保存的 fsys.table 对象必须显式调用其 save 方法保存表数据到文件。

### fsysConfigObject.set(key,value) <a id="fsysConfigObject.set" href="#fsysConfigObject.set">&#x23;</a>
设置 default 配置文件由参数 @key 指定键的值。  
等价于执行 `当前对象.default[key] = value`。
