我有一个需要文件路径的程序。目前,它的配置如下:
public class Main {
private static final String ACOUSTIC_MODEL_PATH =
"resource:/edu/cmu/sphinx/models/en-us/en-us";
private static final String DICTIONARY_PATH =
"resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict";
我有两个问题:
resource:/path/goes/here
格式是什么,特别是resource
字?我尝试了这些选项,但无法找到文件:
private static final String DICTIONARY_PATH = "/d/cmudict-en-us.dict";
private static final String DICTIONARY_PATH = "file:/d/cmudict-en-us.dict";
private static final String DICTIONARY_PATH = "file://d/cmudict-en-us.dict";
以下是路径的使用方式(位置是此处的路径):
public static URL resourceToURL(String location) throws MalformedURLException {
Matcher jarMatcher = jarPattern.matcher(location);
if (jarMatcher.matches()) {
String resourceName = jarMatcher.group(1);
return ConfigurationManagerUtils.class.getResource(resourceName);
} else {
if (location.indexOf(':') == -1) {
location = "file:" + location;
}
return new URL(location);
}
}
答案 0 :(得分:1)
似乎resources:/
只是程序中使用的内部模式(请参阅jarPattern
正则表达式,该表达式应在程序中的某处声明)。它不是描述URL的常用语法。但是如果这种模式不匹配,则回退实现是将字符串视为URL。本地文件URL始终以file:///
开头,后跟普通路径,其中反斜杠替换为正斜杠。
请尝试以下字符串,它是有效的网址:
"file:///d:/cmudict-en-us.dict"
答案 1 :(得分:0)
如果要在磁盘上指定路径,可以使用其绝对路径,如下所示:
String path = "C:\Folder\AnotherFolder\file.txt";
然而,问题在于' \'符号可能会导致问题,因为java将其识别为尝试标记转义序列,如\ n,\ r \ n等。要防止此错误,您可以替换' \'用' \\'并且JVM将其作为常规路径读取。因此,您可以尝试以下代码而不是上面的代码:
String path = "C:\\Folder\\AnotherFolder\\file.txt";