maven项目读取文件失败,编译时提示找不到文件

1、原因分析

        项目在编译成功后的时候,maven会生成一个target目录,用来存放字节码文件,而真正被JVM(JAVA虚拟机)运行的就是target目录下的字节码文件。

        但是Maven项目在默认情况,不放在resources目录下的文件资源,是不会被编译到target目录中去的。因此就会存在即使文件路径写对了,仍然读取不到文件的情况。

865fb7d6c6e6475fa5bd4ceeab90a847.png

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值