【问题标题】:How to specify a path in a properties file to be loaded with Java Properties如何在要使用 Java 属性加载的属性文件中指定路径
【发布时间】:2011-07-09 02:56:25
【问题描述】:

我有一个要加载到 Java Properties 对象中的 .properties 文件。 该文件包含一些路径。为了能够在使用 Properties.load() 方法从文件加载属性时加载属性文件而不获取 java.lang.IllegalArgumentException: Malformed \uxxxx encoding.,我需要在路径中使用转义字符“\”。

所以我的路径看起来像:C:\\Users\\Harald\\Folder1\\Version1\\Folder2。而且它是这样工作的,不会抛出异常。

问题是我无法向我的用户解释(因为这个路径可以由用户更改!)他需要在路径中使用双'\'。

有人知道这个问题的解决方法吗? 谢谢!

【问题讨论】:

  • 你有能力在发送到load()方法之前截取文件名吗?
  • 你会读取属性然后从那里加载属性吗?
  • @adarshr:不,我不能拦截它。
  • 你的问题没有多大意义,你能发布一些相关的代码和示例输入吗?我不认为我跟着你。你的房产看起来怎么样?使用该属性的代码是什么样的?
  • @OscarRyz 使用这些属性的代码是 java.util.Properties 类,它要求您转义反斜杠。 OP 不希望用户处理这个问题。

标签: java properties path


【解决方案1】:

更简单的解决方案是使用正斜杠。这样,您的路径将看起来像 C:/Users/Harald/Folder1/Version1/Folder2,其他一切都可以正常工作 - 无需更改代码!

【讨论】:

  • 称为正斜杠
【解决方案2】:

您最好为用户定义放置属性文件的路径,或者将它们指向现有的属性文件(包含有关有用属性等的 cmets),例如${user.home}\\myapp\\myprops.properties,然后始终加载该文件,或者更好的是,只需提供目录并加载该目录中以 .properties 结尾的每个文件。

如果您的应用程序是 GUI 应用程序,您还可以允许用户在文件对话框中选择文件。您从 swing 和 SWT 标签和文件选择器中返回的字符串是 Java 友好的,您不必担心转义字符。

【讨论】:

    【解决方案3】:

    我对你的问题有点困惑。您是否在问是否有一种方法可以让用户编辑属性文件而无需使用非直观的 \ 转义字符?

    如果您将其设置为让用户能够编辑,也许您应该有一个程序或脚本来创建属性文件(在需要时添加转义字符)

    【讨论】:

    • 是的,你完全明白我想要什么。 :)
    • 那么您可能希望有一个小界面供用户输入路径。用户可以使用一个小对话框来选择他想要的路径。甚至可以帮助拥有一个文件浏览器,这样用户就可以浏览到该路径,而不是手动输入路径。然后只需在适当的地方添加 \'s。
    • 关于您的建议 - 我只是解析 .properties 文件并采用路径原样(可能是用户正确编写的)。所以我不会以这种方式使用Java的Properties。
    • 我的意思是在用户和 .properties 文件的创建之间添加一个层,以便以 java 需要解析的方式生成 .properties 文件。还可以使程序对用户更友好,如果这是典型计算机用户(即不是其他程序员)使用的程序,这将是适当的 UI 操作。
    • 是的,但就我而言,添加新图层并不值得。用户只是那里的路径一次,就是这样。只需解析属性文件并将路径放在 ArrayList 中就更简单了。但再次感谢! :)
    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 2016-03-10
    • 2016-05-23
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多