diff --git a/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java b/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java index 1b44ea581876051929b3e20742fd3cd6f0748f54..d6a7874c20b55ddb5f5d75c09f350e152b4e3281 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java +++ b/src/main/java/org/jcnc/jnotepad/controller/manager/ShortcutKey.java @@ -9,7 +9,8 @@ import org.jcnc.jnotepad.Interface.ShortcutKeyInterface; import org.jcnc.jnotepad.tool.FileUtil; import org.jcnc.jnotepad.view.manager.ViewManager; -import java.io.File; +import java.io.*; +import java.net.URL; import java.util.Map; import java.util.Objects; @@ -20,14 +21,36 @@ import java.util.Objects; public class ShortcutKey implements ShortcutKeyInterface { @Override public void createShortcutKeyByConfig() { - String json = "src/main/resources/config/shortcutKey.json"; - File jsonFile = new File(json); - // 读取json文件 - String jsonData = FileUtil.getJsonStr(jsonFile); + String rootPath =System.getProperty("user.dir"); + // 构建JSON文件路径 + String jsonFilePath = rootPath +"/config/shortcutKey.json"; + InputStream inputStream = getClass().getResourceAsStream("/config/shortcutKey.json"); + StringBuffer jsonData = new StringBuffer(); + File file = new File(jsonFilePath); + if(file.exists()){ + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String line; + while ((line = reader.readLine()) != null) { + jsonData.append(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + }else { + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while ((line = reader.readLine()) != null) { + jsonData.append(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + // 转json对象 GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); - Map shortcutKeyConfig = gson.fromJson(jsonData, new TypeToken>() { + Map shortcutKeyConfig = gson.fromJson(jsonData.toString(), new TypeToken>() { }.getType()); for (Map.Entry stringObjectEntry : shortcutKeyConfig.entrySet()) { // 保证json的key必须和变量名一致