当前位置: 首页 > 面试题库 >

如何使用Java包获取所有属性文件并更新键值?

隗昀
2023-03-14
问题内容

我尝试了很多,但是找不到解决方案。

|
|--src/main/resouces
       |
       |-updatePropertiesFile.java
       |-xyz_en_US.properties
       |-xyz_en_AF.properties
       |-xyz_en_AE.properties

这是我的项目结构。

我有一个updatePropertiesFile类,用于更新所有属性文件的密钥。我有大约200个属性文件。

因此,我需要的是,我需要编写一种方法来更新所有这些属性文件中的特定键。手动更改并不是那么实际。我需要编写一个执行此功能的应用程序。

我尝试使用resoucebundle机制。但是使用资源包,我们只能获得一个属性文件。我试过ResourceBundle.getBundle(String,Locale)ResourceBundle.getBundle(String)方法。

我需要遍历这些属性文件和密钥的更新。

我最初的问题是固定的。

我这样做是:

File[] files = new File("src/main/resources").listFiles();
    for (File file : files) {
    if (file.getName().endsWith("properties"))  {
     //my logic
    }

但是,当我这样做时,我在属性文件中的注释被删除,顺序也被更改。我也保留键的顺序和属性文件中的注释。

为了保持我尝试使用的顺序:

public static class LinkedProperties extends Properties {
        private final HashSet<Object> keys = new LinkedHashSet<Object>();

        public LinkedProperties() {
        }

        public Iterable<Object> orderedKeys() {
            return Collections.list(keys());
        }

        public Enumeration<Object> keys() {
            return Collections.<Object>enumeration(keys);
        }

        public Object put(Object key, Object value) {
            keys.add(key);
            return super.put(key, value);
        }
    }

但这导致属性文件中的键值对发生了一些变化。添加了一些特殊字符。

请帮我保持评论和顺序


问题答案:

每个Java IDE都有一个替换路径功能。Sublime Text,VS
Code和Atom几乎肯定也有。IntelliJ的特别好。甚至没有理由编写Java代码来做到这一点。否则,它很简单:

File[] files = new File("src/main/resources").listFiles();
for (File file in files) {
    if (file.getName().endsWith("properties")) {
        //Load and change...
    }
}


 类似资料:
  • 问题内容: 我通过CMIS将一个外部Web应用程序连接到露天仓库。 我已经能够将文档上传到存储库中,或者能够下载n查看文档。 现在我的要求是,我必须更新特定的文档属性。 因此,任何人都可以提供示例代码或使用CMIS更新文档属性的步骤。 提前致谢… 问题答案: 试试这个对我来说很好 在我的示例中,您只需替换为所需的内容 希望对你有帮助

  • 但是响应只返回用户和他们的一些属性,而不是我在门户中看到的所有属性。 进行REST调用以获取所有用户及其字段/属性的正确URI是什么?

  • 问题内容: 我有一个配置值的键/值对列表,我想将它们存储为Java属性文件,并在以后加载和迭代。 问题: 我是否需要将文件存储在与将要加载它们的类相同的程序包中,或者应该将其放置在任何特定位置? 该文件是否需要以任何特定的扩展名结尾还是.txt可以的? 如何在代码中加载文件 我如何遍历其中的值? 问题答案: 你可以将InputStream传递给Property,因此你的文件几乎可以在任何地方,并且

  • 我需要在运行时拦截所有Spring Integration组件,并且应该能够获取属性值,以便记录有意义的消息。例如: 在上面的示例中,我需要截获int-http:output-gateway并捕获url、request-channel和expected-response-type的值。我们需要为所有http出站网关这样做。 或 此外,我还试图将LogMessage注入到wire-tap中,以便从M

  • 问题内容: 如果有一个Javascript对象: 假设它有50多个属性,却不知道属性名称(即不知道“键”)如何在循环中获取每个属性值? 问题答案: 通过使用一个简单的循环:

  • 问题内容: 我需要从文件夹中读取所有“ .txt”文件(用户需要选择此文件夹)。 请告知如何做? 问题答案: 您可以使用类,这是非常简单的用法 只需创建一个实例,您想要如何覆盖接受方法