从CLASSPATH中的目录的子目录中获取文件的路径

时间:2011-08-03 10:23:24

标签: java file resources

给出以下目录结构:

working-directory
   subfolder1
      file1.wav
      file2.wav
      file3.wav
   subfolder2
      file4.wav
      file5.wav
      file6.wav
   subfolder3
      file7.wav
      file8.wav
      file9.wav
   jar-that-im-running.jar

我需要获取每个wav文件的路径。我认为既然文件夹在工作目录中,并且因此是类路径的一部分(如果我的假设是错误的,我只是将工作目录添加到类路径中),我可以运行:

String path = ClassLoader.getSystemResource("file1.wav");

String path = ClassLoader.getSystemResource("/file1.wav");

但它不起作用,除非我指定了wave文件所在的文件夹。这没关系,但我不知道每个wave文件在哪个文件夹中;我只知道他们的名字。我将以某种方式处理所有文件,但我所做的顺序取决于配置文件。另外,我不打算直接编辑这些文件。相反,我将把它们作为参数传递给ProcessBuilder。由于路径中的某些目录可能包含空格(在URL中转换为%20),因此我认为可以使用path.replaceAll("%20", " ")转换它们。我是否会更好地使用文件,或者有没有办法获得特定的wav文件,而不知道它的父文件夹。

1 个答案:

答案 0 :(得分:3)

您是否尝试从类加载器获取系统资源?这里有一段代码来说明:

String path = ClassLoader.getSystemResource("subfolder1/file1.wav");