2015-07-28 71 views
0
Package 
| 
|------src/main/java 
|------resources 
      |---- config.properties 

的pom.xml文件,我已经设置resoucres目录如下Maven的:无法读取资源文件夹

<resources> 
     <resource> 
      <directory>resources</directory> 
     </resource> 
</resources> 

我能够得到文件的绝对路径。但是当我尝试读取或检查它是否是文件或目录时,它将返回false。

sample.java

File configFile = new File("config.properties");    
     System.out.println("PATH="+newFile.getAbsolutePath()); 
     System.out.println("IsFile="+newFile.isFile()); 
     System.out.println("CanRead="+configFile.canRead()); 

输出

PATH=D:\JCB\MyWorkSpace_LunaJEE\MessageProcessor\config.properties 
IsFile=false 
CanRead=false 

任何帮助将不胜感激。

回答

1

该文件不在D:\JCB\MyWorkSpace_LunaJEE\MessageProcessor\config.properties中,但在resources文件夹中,因此它不存在,因此既不是文件也不是目录。我建议把它/src/main/resources,然后通过getResourceAsStream(name);

0

访问它在pom.xml中,我已经设置resoucres目录如下

用于定义资源将被存储为部分目录Maven构建结构 - 因此它指定Maven应该在哪里寻找资源文件以包含在程序中。它没有定义在运行应用程序时可以找到哪些文件。如果可以的话,更改Maven约定并不是一个好主意,请将其保留为src/main/resources。如果您在Maven之上使用外部工具,则可能会发生冲突。

什么是重要的部分是什么与文件时发生什么,当你做的应用程序由Maven,例如mvn干净安装

无论是在的src/main/java的编译和类放在目标目录,以正确的封装结构。将src/main/resources文件夹中的文件和目录复制到同一个目标目录。这些资源因此成为您的Java程序的一部分,可在classpath上找到;例如,如果您想让Maven在此时将您的应用程序构建到可执行的jar文件中,则资源将与该文件夹中的类一起打包。

要正确加载随应用程序打包的资源文件,应该使用Java的类加载器系统。 This question's answer表明详细。要更改您当前的测试代码,您宁愿按照如下方式进行操作:

InputStream is = getClass().getClassLoader().getResourceAsStream("config.properties"); 

if(is != null){ 
    // yep, the file exists on the classpath! Now load it with the InputStream 
} 
相关问题