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

在不转义值的情况下读取Java属性文件

丌官皓君
2023-03-14
问题内容

我的应用程序需要使用.properties文件进行配置。在属性文件中,允许用户指定路径。

问题

属性文件需要转义的值,例如

dir = c:\\mydir

需要的

我需要某种方法来接受不转义值的属性文件,以便用户可以指定:

dir = c:\mydir

问题答案:

为什么不简单地扩展属性类以合并双正斜杠的剥离。这样做的一个好功能是,在程序的其余部分中,您仍然可以使用原始Properties类。

public class PropertiesEx extends Properties {
    public void load(FileInputStream fis) throws IOException {
        Scanner in = new Scanner(fis);
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        while(in.hasNext()) {
            out.write(in.nextLine().replace("\\","\\\\").getBytes());
            out.write("\n".getBytes());
        }

        InputStream is = new ByteArrayInputStream(out.toByteArray());
        super.load(is);
    }
}

使用新类很简单:

PropertiesEx p = new PropertiesEx();
p.load(new FileInputStream("C:\\temp\\demo.properties"));
p.list(System.out);

剥离代码也可以进行改进,但是总的原理就在那里。



 类似资料:
  • 有一个行为我找不到相关的留档。让我们假设以下代码。它应该在控制台中显示使用foo.bar属性配置的内容: 如果您在application.yml()中设置了以下属性,它将被正确地拾取并在控制台中显示“fromapplication.yml”,没什么花哨的 现在,如果您使用完全相同的代码,但这次您想使用命令行参数覆盖application.yml中定义的属性,并将--设置为命令行arg(请注意,这次

  • 我在xml文件中有以下数据: 我编写了下面的代码,可以读取文件中的所有节点。 我的问题是如何读取xml文件中属性type=""的值并将其作为String获取? 提前感谢。

  • 问题内容: 我必须用Java读取CSV文件,我用Google对其进行了搜索,但是我有办法使用标题进行读取;但我没有文件中可用的列标题和列数的信息。在这种情况下,我该如何读取CSV文件。 谢谢 问题答案: 您可以假设每一行都是String类,并将所有内容读取到二维数组中。之后,您可以尝试将字符串解析为适当的格式。 但是,如果您不知道行数据类型,这只是一个猜测。

  • 问题内容: 是否有一种隐藏的方法可以在 不 读取整行的 情况下 从文件或类似文件的对象读取令牌?我立即拥有的应用程序(其他人的问题,不是我的问题)正在将具有几个非常长的行的大型矩阵转置,本质上是对选择单个列元素的迭代器执行操作。这个想法不是在迭代过程中将整个文件存储在内存中。 这些行是用空格分隔的ASCII十进制数字。 对于Java的Scanner类,问题可能很简单,但我没有在Python标准库中

  • 首先,如果这是一个很长的代码段,我很抱歉,但是,我想做一个模态窗口,它将你在我的用户表单中写的东西写下来,并要求你确认它。我目前正在学习Javascript,我不允许使用innerHTML,我必须动态地编写“名字”等(名字的文本),不允许只在弹出窗口内写它。我已经让大多数东西工作,但“名字”“名字”等显示为“未定义”,或者(正如你可以看到的,我在这种情况下只用名字尝试的事情)显示为“空”。 希望有

  • 问题内容: 我想向服务器发送命令,并确定是否得到响应。 现在,我正在使用的函数,该函数会阻塞直到服务器发出响应,但我要做的就是首先确认服务器是否响应。 我尝试使用或避免此阻止,但这无济于事。 这导致我的程序陷入等待服务器响应的困境,这种情况永远不会发生。根据我对事物的理解,似乎做同样的事情。 我在此处找到的关于该主题的其他问题没有回答我的问题,所以请您回答我的问题会很好。 问题答案: 可能您所需要