繁体   English   中英

无法在Maven项目的/ resources文件中使用FileOutputStream写入

[英]Unable to write with FileOutputStream in a /resources file in maven project

在一个Maven项目中,我在/resources文件夹下有一个image.jpg文件。 在此处输入图片说明

当我尝试使用检索文件时

private static File getImage(){
    ClassLoader classLoader = Db.class.getClassLoader();
    return new File(classLoader.getResource("image.jpg").getFile());
}

该文件正确返回,但是当我尝试将此文件放入FileOutputStream以写入一些新数据时,它不起作用

FileOutputStream fos = new FileOutputStream(getImage());
fos.write(blobImage.getBytes(1, (int)blobImage.length()));
fos.flush(); fos.close();

我没有错误,它只是无法写任何新东西,但是如果我将FileOutputStream更改为此

FileOutputStream fos = new FileOutputStream( "C:\\...src\\main\\resources\\image.jpg");

它正常工作,图像更改为blobImage文件中的内容。

这里 :

private static File getImage(){
    ClassLoader classLoader = Db.class.getClassLoader();
    return new File(classLoader.getResource("image.jpg").getFile());
}

您检索位于运行时类路径中的image.jpgtarget/classes不在src/main/resouces

src/main/resouces是在Maven构建期间而非运行时使用的资源路径。
process-resources Maven阶段执行之后,位于src/main/resources中的文件/文件夹将被复制到target/classes

因此,更改之后,该映像实际上已更改,但是哪一个位于target/classes


请注意,打包在jar / war中的资源并非旨在更改。 您将遇到锁定和缓存问题。 如果可以更改资源,则这些资源应位于组件之外:文件系统是图像的合理选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM