java 正在字符串中保存路径

elcex8rz  于 2023-01-04  发布在  Java
关注(0)|答案(4)|浏览(127)
private static final String BasePath = "/home/rafael/pesquisa/ImageSimilarity";

我正在开发一个图像比较程序,我从某个地方找到了这行代码。但是在上面的例子中,路径是为linux系统设置的,而作为一个Windows用户,我想将路径设置为windows设备。所以我将路径更改为

private static final String BasePath ="C:\imgs"

然而,这似乎是一个错误,我猜这是与正斜杠和反斜杠。我如何设置路径字符串在我的情况下?任何帮助将不胜感激。

yftpprvb

yftpprvb1#

你需要转义windows路径中的反斜杠,如下所示:

private static final String BasePath = "C:\\imgs";

您也可以只使用正斜杠:

private static final String BasePath = "C:/imgs";
htrmnn0y

htrmnn0y2#

您可以使用File.separator,这样就不必担心平台特定的路径分隔符。

private static final String BASE_PATH = "C:" + File.separator + "imgs";

更多详情请参见here

owfi6suc

owfi6suc3#

你需要改变

private static final String BasePath ="C:\imgs"

private static final String BasePath ="C:\\imgs"

单个\是一个转义字符,会导致"无效转义字符"的问题,这是因为\i应该是一个转义文字。(幸运的是,它不是。)\是单个\的有效转义文字,因此它解决了这个问题。
继续问题场景,例如,如果您有

String path = "c:\noproblem";

那么编译就没有问题了,因为\n是一个有效的转义字符(但它仍然会导致其他问题)。
但更好的是,使用File.separator
Java Documentation
默认的名称分隔符字符由系统属性文件. separator定义,并且在此类的公共静态字段separator和separatorChar中可用。当路径名字符串转换为抽象路径名时,其中的名称可以由默认的名称分隔符字符或基础系统支持的任何其他名称分隔符字符分隔。
因此-它将改变操作系统所需的分隔符的使用。
看一看How to construct a file path in java

dtcbnfnu

dtcbnfnu4#

你的东西应该工作当你使用

private static final String BasePath = "C:\\imgs";

注:
虽然您仍然可以使用正斜杠来实现此功能,但我建议您使用File.separator来使其更清晰。

相关问题