为什么此检查不会返回true?
String dirpath = getClass().getResource("../util/assets/sounds/").toString();
File dir = new File(dirpath);
System.out.println(dirpath);
System.out.println(dir);
System.out.println(dir.isDirectory());
它返回以下内容:
file:/D:/JAVA/exercises/FX/TasksList/build/classes/taskslist/util/assets/sounds
file:\D:\JAVA\exercises\FX\TasksList\build\classes\taskslist\util\assets\sounds
false
我使用netbeans IDE作为源代码运行它。
答案 0 :(得分:3)
getClass().getResource(...)返回URL,而不是文件路径字符串。 File的构造函数需要A file path string。
您可以尝试使用Paths constructor从URI构建有效的文件路径,您可以使用toUri()
从资源中获取该文件路径。
所以,这应该有效:
Files.isDirectory(
Paths.get(
getClass().getResource("../util/assets/sounds/").toUri()
)
)
或者
new File(
getClass().getResource("../util/assets/sounds/").toUri()
).isDirectory();
我没有Windows机器试试。
注意:如果您开始将应用程序打包为jar(如推荐的那样),那么此技术将会中断。资源不是文件,而是jar资源。没有关于jar资源的文件目录的概念。
答案 1 :(得分:0)
应该是:
String dirpath = getClass().getResource("../util/assets/sounds/").getPath();
而不是:
String dirpath = getClass().getResource("../util/assets/sounds/").toString();
它会起作用。