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();
}
}
}
}