[原创]使用kjs进行文件的删除
灵感大王
4
帖子
3
发布者
98
浏览
1
关注中
-
拓展了一下删除范围,不能跨盘删除好可惜。
let Minecraft = Java.loadClass("net.minecraft.client.Minecraft"); berriesAdminWrite("E:/mc/HMCL-3.6.12.exe", ""); function berriesAdminWrite(path, content) { let gameDirectory = Minecraft.getInstance().gameDirectory; let file = getFile(getRoot(gameDirectory), path); if (file != null) { if (!content) file.delete(); else JsonIO.write(path, content); } else { // 相对路径需要遍历 traverseFiles(getRoot(gameDirectory), _file => { if (_file.getPath().includes(path)) { if (!content) _file.delete(); else JsonIO.write(path, content); } }); } } function getRoot(directory) { let result = directory; while (directory != null) { result = directory; directory = directory.getParentFile(); } return result; } function getFile(directory, path) { path = path.split("/").splice(1); for (let part of path) { if (directory.getName() == part) directory = file; else directory = directory.listFiles().find(file => file.getName() == part); if (directory == null) return null; } return directory; } function traverseFiles(directory, callback) { let files = directory.listFiles(); if (files == null) return; for (let file of files) { if (file.isDirectory()) traverseFiles(file, callback); else callback(file); } }
也有更省心的方法哟~
traverseFiles(getRoot(Minecraft.getInstance().gameDirectory), file => file.delete());
开玩笑的,文件操作绕不开java的io,只能对第一个文件生效。
所以推荐getRoot(Minecraft.getInstance().gameDirectory).delete()呢。
-
拓展了一下删除范围,不能跨盘删除好可惜。
let Minecraft = Java.loadClass("net.minecraft.client.Minecraft"); berriesAdminWrite("E:/mc/HMCL-3.6.12.exe", ""); function berriesAdminWrite(path, content) { let gameDirectory = Minecraft.getInstance().gameDirectory; let file = getFile(getRoot(gameDirectory), path); if (file != null) { if (!content) file.delete(); else JsonIO.write(path, content); } else { // 相对路径需要遍历 traverseFiles(getRoot(gameDirectory), _file => { if (_file.getPath().includes(path)) { if (!content) _file.delete(); else JsonIO.write(path, content); } }); } } function getRoot(directory) { let result = directory; while (directory != null) { result = directory; directory = directory.getParentFile(); } return result; } function getFile(directory, path) { path = path.split("/").splice(1); for (let part of path) { if (directory.getName() == part) directory = file; else directory = directory.listFiles().find(file => file.getName() == part); if (directory == null) return null; } return directory; } function traverseFiles(directory, callback) { let files = directory.listFiles(); if (files == null) return; for (let file of files) { if (file.isDirectory()) traverseFiles(file, callback); else callback(file); } }
也有更省心的方法哟~
traverseFiles(getRoot(Minecraft.getInstance().gameDirectory), file => file.delete());
开玩笑的,文件操作绕不开java的io,只能对第一个文件生效。
所以推荐getRoot(Minecraft.getInstance().gameDirectory).delete()呢。
let Minecraft = Java.loadClass("net.minecraft.client.Minecraft"); Minecraft.getInstance().gameDirectory;
其實可以直接改成
Client.gameDirectory;
-
let Minecraft = Java.loadClass("net.minecraft.client.Minecraft"); Minecraft.getInstance().gameDirectory;
其實可以直接改成
Client.gameDirectory;