maven项目读取文件失败,编译时提示找不到文件
·
1、原因分析
项目在编译成功后的时候,maven会生成一个target目录,用来存放字节码文件,而真正被JVM(JAVA虚拟机)运行的就是target目录下的字节码文件。
但是Maven项目在默认情况,不放在resources目录下的文件资源,是不会被编译到target目录中去的。因此就会存在即使文件路径写对了,仍然读取不到文件的情况。

2、问题解决
pom文件中引入以下代码
<build>
<resources>
<!--
这段话的大概意思:如果【src/main/java】目录存在以下结尾的文件时,
编译生成target的时候,将以下文件编译到target目录中去
-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.txt</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
3、读取文件中的数据
public class FileUploadHandle {
public static void main(String[] args) throws Exception {
InputStream inputStream = FileUploadHandle.class.getResourceAsStream("token.txt");
String authorization = getStringByInputStream(inputStream).trim();
}
/**
* 将文件流转为字符串
*
* @param inputStream
* @return
*/
public static String getStringByInputStream(InputStream inputStream) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
byte[] b = new byte[10240];
int n;
while ((n = inputStream.read(b)) != -1) {
outputStream.write(b, 0, n);
}
return outputStream.toString();
} catch (Exception e) {
throw new RuntimeException("解析文件失败");
} finally {
try {
outputStream.close();
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
更多推荐

所有评论(0)