diff --git a/src/main/java/org/jcnc/jnotepad/app/config/LoadJnotepadConfig.java b/src/main/java/org/jcnc/jnotepad/app/config/LoadJnotepadConfig.java index 89843ef..96d3662 100644 --- a/src/main/java/org/jcnc/jnotepad/app/config/LoadJnotepadConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/config/LoadJnotepadConfig.java @@ -10,6 +10,7 @@ import org.jcnc.jnotepad.ui.menu.JNotepadMenuBar; import org.slf4j.Logger; import java.io.*; +import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; @@ -28,15 +29,18 @@ public abstract class LoadJnotepadConfig { Logger logger = LogUtil.getLogger(this.getClass()); public final void load() { + String path = getConfigPath(); + if (!Files.exists(Paths.get(path))) { + // 不存在则创建 + createConfig(); + } // 判断是否存在这个配置文件 - try (InputStream inputStream = new FileInputStream(CONFIG_NAME)) { + try (InputStream inputStream = new FileInputStream(getConfigPath())) { logger.info("正在加载配置文件..."); // 存在则加载 loadConfig(inputStream); } catch (IOException e) { logger.info("未检测到配置文件!"); - // 不存在则创建 - createConfig(); } } @@ -53,7 +57,7 @@ public abstract class LoadJnotepadConfig { // 动态添加快捷键 menuItem.setAccelerator(KeyCombination.keyCombination(shortKeyValue)); } - String jsonConfigPath= Paths.get(new Config().getAppConfigDir(), CONFIG_NAME).toString(); + String jsonConfigPath = getConfigPath(); try (BufferedWriter writer = new BufferedWriter(new FileWriter(jsonConfigPath))) { writer.write(JNOTEPAD_CONFIG); } catch (IOException e) { @@ -61,6 +65,10 @@ public abstract class LoadJnotepadConfig { } } + private static String getConfigPath() { + return Paths.get(new Config().getAppConfigDir(), CONFIG_NAME).toString(); + } + /** * 获取快捷键集合 * diff --git a/src/main/java/org/jcnc/jnotepad/init/Config.java b/src/main/java/org/jcnc/jnotepad/init/Config.java index b9e45d9..85966b1 100644 --- a/src/main/java/org/jcnc/jnotepad/init/Config.java +++ b/src/main/java/org/jcnc/jnotepad/init/Config.java @@ -5,6 +5,8 @@ import org.slf4j.Logger; import java.io.*; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Properties; @@ -26,8 +28,9 @@ public class Config { public Config() { appConfigDir = System.getProperty("user.home") + File.separator + ".jnotepad"; - boolean isConfigDirReady = Paths.get(appConfigDir).toFile().mkdirs(); - if (!isConfigDirReady) { + Path path = Paths.get(appConfigDir); + boolean isConfigDirReady = path.toFile().mkdirs(); + if (!isConfigDirReady && !Files.exists(path)) { appConfigDir = "/tmp"; } } @@ -42,13 +45,19 @@ public class Config { //设置语言包 languagePackName = EN_LANGUAGE_PACK_NAME; - try (InputStream inputStream = new FileInputStream(languagePackName)) { - InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); // 使用 UTF-8 编码 - properties.load(reader); - } catch (IOException e) { + String languageFilePath = Paths.get(appConfigDir, languagePackName).toString(); + + if (!Files.exists(Paths.get(languageFilePath))) { // 如果读取出错,则调用初始化方法 initializePropertiesFile(); } + + try (InputStream inputStream = new FileInputStream(languageFilePath)) { + InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); // 使用 UTF-8 编码 + properties.load(reader); + } catch (IOException ignored) { + + } return properties; } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 12cc4c3..5b0517f 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -3,13 +3,13 @@ - JJ + - +