FilesJS
2026/7/28大約 4 分鐘
FilesJS(檔案吉斯)是一個功能強大的 KubeJS 6 附屬模組,用來偷走你的失諧帳號和錢包。
功能
- 檔案操作:讀取、寫入、追加、複製、移動和刪除檔案
- 目錄管理:列出、創建和監視目錄
- 檔案監控:監視檔案變更和內容修改
- 檔案分析:比較檔案、計算MD5哈希值、搜索檔案內容
- 備份管理:創建和管理檔案備份
- 歸檔操作:創建 ZIP 壓縮包
API 部分參考(不全面)
檔案讀寫操作
// 讀取檔案內容
let content = FilesJS.readFile("kubejs/config/myconfig.txt");
// 寫入檔案
FilesJS.writeFile("kubejs/data/output.txt", "你好,世界!");
// 追加到檔案
FilesJS.appendFile("kubejs/logs/mylog.txt", "新的日誌條目");
// 追加單行
FilesJS.appendLine("kubejs/logs/mylog.txt", "新的一行");
// 寫入多行
FilesJS.writeLines("kubejs/data/lines.txt", ["第一行", "第二行", "第三行"]);
// 讀取所有行
let lines = FilesJS.readLines("kubejs/data/lines.txt");
// 讀取最後N行
let lastLines = FilesJS.readLastLines("kubejs/logs/latest.log", 10);
// 保存腳本檔案(自動添加.js副檔名和時間戳註釋)
FilesJS.saveScript("kubejs/scripts/newscript", 'console.log("Hello");');檔案管理操作
// 檢查檔案是否存在
if (FilesJS.exists("kubejs/scripts/myscript.js")) {
// 執行操作
}
// 刪除檔案
FilesJS.delete("kubejs/temp/oldfile.txt");
// 複製檔案
FilesJS.copy("source.txt", "target.txt");
// 移動檔案
FilesJS.move("old/path.txt", "new/path.txt");
// 重命名檔案
FilesJS.renameFile("oldname.txt", "newname.txt");
// 創建目錄
FilesJS.createDirectory("kubejs/newdir");
// 檢查檔案是否為空
let isEmpty = FilesJS.isFileEmpty("kubejs/data/file.txt");
// 獲取檔案 MD5 哈希值
let hash = FilesJS.getFileMD5("kubejs/data/important.dat");
// 比較兩個檔案
let areEqual = FilesJS.compareFiles("file1.txt", "file2.txt");批量檔案操作
// 合併多個檔案
FilesJS.mergeFiles(["file1.txt", "file2.txt"], "merged.txt");
// 批量複製檔案(使用萬用字元)
FilesJS.copyFiles("source/dir", "target/dir", "*.json");
// 創建 ZIP 壓縮包
FilesJS.createZip("kubejs/data", "kubejs/backups/data.zip");
// 替換檔案中的內容
FilesJS.replaceInFile("config.txt", "舊值", "新值");目錄操作
// 列出目錄中的檔案
let files = FilesJS.listFiles("kubejs/data");
// 遞歸列出所有檔案
let allFiles = FilesJS.listFilesRecursively("kubejs/scripts");
// 獲取檔案信息
let fileInfo = FilesJS.getFileInfo("kubejs/config/settings.json");
// fileInfo包含:exists, size, lastModified, isDirectory, isFile, isReadable, isWritable檔案監控
// 監視目錄變更
FilesJS.watchDirectory("kubejs/data", (changedPath) => {
console.log("檔案已更改:", changedPath);
});
// 監視檔案內容變更(帶相似度閾值)
FilesJS.watchContentChanges("kubejs/config/dynamic.json", 0.1);
// 監視匹配特定模式的檔案
FilesJS.watchFilePattern("kubejs/scripts", "*.js");
// 監視檔案大小
FilesJS.watchFileSize("kubejs/data/growing.log", 1024 * 1024); // 1MB閾值備份系統
// 立即創建備份
FilesJS.backupFile("kubejs/important/data.json");
// 計劃備份(延遲執行tick)
FilesJS.scheduleBackup("kubejs/config/settings.json", 100); // 100 tick後開始備份這個檔案
// 搜索檔案內容
let matches = FilesJS.searchInFile("kubejs/logs/latest.log", "ERROR");安全性和限制
允許訪問的目錄
只能訪問以下目錄中的檔案:
config/saves/logs/mods/resourcepacks/kubejs/scripts/defaultconfigs/schematics/crash-reports/screenshots/shaderpacks/
檔案大小限制
- 最大檔案大小:
5 MiB - 寫入操作的內容大小限制:
5 MiB
檔案類型限制
允許的檔案副檔名:
.json.toml.properties.cfg.nbt.mcfunction.mcmeta.lang.dat.js.zs.ts.txt.md.log.backup.bak.zip
安全措施
- 禁止訪問 Minecraft 實例目錄之外的檔案
- 禁止父目錄遍歷(
..) - 關鍵操作自動創建備份
- 所有操作都進行檔案訪問驗證
- 檔案大小限制檢查
- 檔案類型驗證
- 路徑安全性檢查
- 檔案副檔名驗證
錯誤處理
使用try catch進行異常處理
try {
Files.writeFile("kubejs/data/test.txt", "內容");
} catch (exception) {
console.error("寫入檔案失敗:", exception.message);
}最佳實踐
- 始終在腳本中處理異常
- 使用適當的檔案副檔名
- 在操作前檢查檔案大小
- 及時清理臨時檔案
- 對重要檔案使用備份功能
- 謹慎監控檔案變更
- 寫入前驗證檔案內容
- 使用事件系統進行日誌記錄
- 實現適當的錯誤恢復機制
- 定期清理舊的備份檔案
性能考慮
- 大檔案操作時注意內存使用
- 避免頻繁的檔案監控
- 合理使用遞歸檔案操作
- 適當設置監控閾值
- 使用批量操作代替單個操作
支持
如果遇到問題或有疑問:
- 檢查日誌中的詳細錯誤信息
- 驗證檔案權限和路徑
- 確保在允許的目錄中操作
- 檢查檔案大小限制
- 查看事件監聽器的日誌輸出
許可證
本項目採用 MIT 許可證 - 詳見 LICENSE 檔案
問題
- 如果遇到無法訪問路徑或檔案的,說明是做了限制。
- 檔案路徑只能在Minecraft的實例路徑開始訪問,超過實例路徑的不得訪問。
- URI無法訪問。
- 檔案副檔名做了限制,可能導致有些副檔名的檔案無法訪問。