Skip to content

🧩 CurrentFolderConfig ​

GUI IO 层 单例枚举

持久化文件选择器「当前目录」到 classyshark.properties 的单例枚举。

📁 源码:ClassySharkWS/src/com/google/classyshark/gui/panel/io/CurrentFolderConfig.java   📦 包:com.google.classyshark.gui.panel.io

职责 ​

CurrentFolderConfig 是单例枚举(INSTANCE),把文件选择器的「当前目录」以 CURRENT_FOLDER 键持久化到工作目录旁的 classyshark.properties。setCurrentDirectory 写入,getCurrentDirectory 读取,失败时回退 user.home。所有异常被吞掉(静默回退),配置不可读时 UI 仍能工作。

关键方法 / 字段 ​

名称类型说明
INSTANCEenum 单例全局唯一实例
CLASSYSHARK_PROPERTIESstatic String文件名 classyshark.properties
CURRENT_FOLDERstatic String属性键
setCurrentDirectory(File)void写入当前目录
getCurrentDirectory()File读目录,失败回退 user.home

工作流程 ​

mermaid
flowchart TD
    A["setCurrentDirectory(path)"] --> B["打开/创建 classyshark.properties"]
    B --> C["props.setProperty(CURRENT_FOLDER, absPath)"]
    C --> D["props.store"]
    D --> E["异常吞掉"]
    F["getCurrentDirectory"] --> G["读 properties"]
    G --> H{"有 CURRENT_FOLDER?"}
    H -- "是" --> I["new File(result)"]
    H -- "否/异常" --> J["new File(user.home)"]

设计要点 ​

  • 🧬 枚举单例 — enum INSTANCE 序列化安全,天然单例。
  • 🤫 静默回退 — 所有异常吞掉,读失败回退 user.home,UI 不因配置损坏而崩。
  • 📁 工作目录旁 — new File(CLASSYSHARK_PROPERTIES) 相对 CWD,无路径抽象。

协作关系 ​

  • 被使用 ← [[ClassySharkPanel]]、[[FileTransferHandler]]

已知问题 / TODO ​

  • 🐛 配置文件位置依 CWD,从不同目录启动 ClassyShark 会读写不同 properties。
  • 🐛 异常全被空 catch 吞掉,无任何日志,配置丢失难以排查。
  • 🐛 setCurrentDirectory 用 props.store 覆盖整个文件,若文件含其他键会被清空。

相关文档 ​

最后更新:

基于 Apache 2.0 协议发布