FileFormwork 是 ZerOS 内核的文件对象模板类,用于创建和管理虚拟文件系统中的文件对象。提供文件内容读取、写入、信息刷新等功能。
FileType - 文件类型枚举(用于文件类型和操作模式)Disk - 虚拟磁盘管理器(用于检查磁盘空间)KernelLogger - 内核日志系统(用于日志输出)new FileFormwork(filetype, filename, filecontent, path, fileAttributes, linkTarget)创建文件对象。
参数:
filetype (number): 文件类型(使用 FileType.GENRE 枚举)filename (string): 文件名称filecontent (string): 文件内容(字符串)path (string): 文件路径fileAttributes (number): 文件属性(可选,位标志)linkTarget (string): 链接目标(可选,用于创建链接文件)示例:
// 创建普通文本文件
const file = new FileFormwork(
FileType.GENRE.TEXT,
"readme.txt",
"This is a readme file.",
"D:/Documents/readme.txt"
);
// 创建只读文件
const readOnlyFile = new FileFormwork(
FileType.GENRE.TEXT,
"config.txt",
"Configuration data",
"D:/Documents/config.txt",
FileType.FILE_ATTRIBUTES.READ_ONLY
);
// 创建链接文件
const linkFile = new FileFormwork(
FileType.GENRE.LINK,
"shortcut.lnk",
"",
"D:/Documents/shortcut.lnk",
null,
"D:/Target/target.txt"
);
文件对象包含以下属性:
fileType (number): 文件类型fileSize (number): 文件大小(字节)fileName (string): 文件名称fileCreatTime (number): 文件创建时间(时间戳)fileModifyTime (number): 文件修改时间(时间戳)fileContent (Array): 文件内容(按行存储的数组)filePath (string): 文件路径fileBelongDisk (string): 文件所属盘符fileAttributes (number): 文件属性(位标志)linkTarget (string|null): 链接目标(如果是链接文件)inited (boolean): 是否已初始化refreshInfo()刷新文件信息(重新计算文件大小)。
示例:
file.refreshInfo();
console.log(`文件大小: ${file.fileSize} 字节`);
readFile()读取文件内容。
返回值: string - 文件内容(字符串)
示例:
const content = file.readFile();
console.log('文件内容:', content);
注意: 如果文件设置了 NO_READ 属性,会抛出错误。
writeFile(newContent, writeMod)写入文件内容。
参数:
newContent (string): 新内容writeMod (number): 写入模式
FileType.WRITE_MODES.OVERWRITE: 覆盖模式FileType.WRITE_MODES.APPEND: 追加模式示例:
// 覆盖模式
file.writeFile("New content", FileType.WRITE_MODES.OVERWRITE);
// 追加模式
file.writeFile("\nAppended content", FileType.WRITE_MODES.APPEND);
注意:
READ_ONLY 属性,会抛出错误使用 FileType.GENRE 枚举:
TEXT: 文本文件JSON: JSON 文件BINARY: 二进制文件LINK: 链接文件使用 FileType.FILE_ATTRIBUTES 枚举(位标志):
NORMAL (0): 正常READ_ONLY (位 1): 只读NO_READ (位 2): 不可读NO_DELETE (位 4): 不可删除NO_MOVE (位 8): 不可移动NO_RENAME (位 16): 不可重命名可以组合使用(使用位或运算):
// 只读 + 不可删除
const attrs = FileType.FILE_ATTRIBUTES.READ_ONLY | FileType.FILE_ATTRIBUTES.NO_DELETE;
链接文件会自动设置以下属性:
READ_ONLYNO_DELETENO_MOVENO_RENAME// 创建文件
const file = new FileFormwork(
FileType.GENRE.TEXT,
"readme.txt",
"Hello, World!",
"D:/Documents/readme.txt"
);
// 读取文件
const content = file.readFile();
console.log('文件内容:', content);
// 刷新信息
file.refreshInfo();
console.log(`文件大小: ${file.fileSize} 字节`);
const file = new FileFormwork(
FileType.GENRE.TEXT,
"data.txt",
"Initial content",
"D:/Documents/data.txt"
);
// 覆盖写入
file.writeFile("New content", FileType.WRITE_MODES.OVERWRITE);
// 追加写入
file.writeFile("\nMore content", FileType.WRITE_MODES.APPEND);
// 读取结果
const finalContent = file.readFile();
console.log('最终内容:', finalContent);
// 创建只读文件
const readOnlyFile = new FileFormwork(
FileType.GENRE.TEXT,
"config.txt",
"Configuration data",
"D:/Documents/config.txt",
FileType.FILE_ATTRIBUTES.READ_ONLY
);
// 尝试写入(会抛出错误)
try {
readOnlyFile.writeFile("New content", FileType.WRITE_MODES.OVERWRITE);
} catch (error) {
console.error('写入失败:', error.message); // "文件 config.txt 为只读,无法修改"
}
// 创建链接文件
const linkFile = new FileFormwork(
FileType.GENRE.LINK,
"shortcut.lnk",
"",
"D:/Documents/shortcut.lnk",
null,
"D:/Target/target.txt" // 链接目标
);
// 链接文件自动设置为只读、不可删除、不可移动、不可重命名
console.log('链接目标:', linkFile.linkTarget);
fileContent 数组中