gpt4 book ai didi

java - 在属性文件中写入属性而不破坏文件中的窗口路径

转载 作者:行者123 更新时间:2023-12-02 07:18:09 26 4
gpt4 key购买 nike

我在 Windows 中有包含绝对文件路径的属性文件,如下所示:

[PRAXIS]
PVS=CDP_Z1
PXID=94773

[SENDEN]
PVS=CDP_Z1
DATEI=C:\imex_workspace\1535_1297160840340.1247
VERSION=2.5

[STATUS]
ERRORLEVEL=0
ERRORTEXT=
READY=0

此A文件包含B文件的文件路径。我想使用Java Properties类将READY属性写入1,其他保持不变。

Properties p = new Properties();
String upload = "a.ini";
p.load(new FileInputStream(upload));
if(p.get("READY") != null && "0".equals(p.get("READY")))
{
p.setProperty("READY","1");
p.store(new FileOutputStream(new File(upload)),null);
}

不知何故,a.ini 更新后,a.ini 内的文件路径被破坏。有人帮助找出在文件中写入属性的最佳方法(可能不是 ini,可能是 txt 文件)。

最佳答案

问题背后的原因是,对于 Java 属性文件,反斜杠字符用作 escape character就像 C 或 Java 语言一样。

您在问题中发布的此文件不是有效的 Java 属性文件,而是 Windows INI 文件。 Windows INI 文件与 Java 属性文件不同,因为它们具有“部分”(示例中的 praxis senden 状态),而且还因为路径是以 DOS 格式指定的,这意味着反斜杠 (\) 用作路径分隔符。在 Java 中,路径分隔符可以用作 Windows 中的反斜杠 (\),但最常见的是,首选 unix 斜杠 (/)。问题是,如果你想使用反斜杠,你需要“转义”它,所以你的路径应该用双反斜杠指定:

DATEI=C:\\imex_workspace\\1535_1297160840340.1247

或者其他方式:

DATEI=C:/imex_workspace/1535_1297160840340.1247

这样路径就与Java属性文件格式兼容。但这可能会对使用此 .ini 文件的 Windows 应用程序产生副作用。

为了解决这个问题,我认为你最好使用一个适当的库来处理 Windows .ini 配置文件,这将保证涵盖这种情况,但也包括你可能的其他可能性没有考虑过,因为 Java 属性文件遵循与 Windows .ini 格式不同的规范。

在这里您可以找到一些您可能需要考虑的库:

关于java - 在属性文件中写入属性而不破坏文件中的窗口路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14662391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com