提问者:小点点

如何从源文件夹中读取图像作为FileInputStream?


File pic=new File(imgloc);
FileInputStream fis=new FileInputStream(pic);

如果未选择图像以上载默认图像,则我的代码为

File pic=new File(this.getClass().getResource("/resources/profile1.png").getFile());
FileInputStream fis=new FileInputStream(pic);

我对数据库的查询是

    ps.setBinaryStream(1,fis ,(int) pic.length()); //While substituing for '?' in query 

构建到jar后,它会在尝试添加默认图像时产生FileNotFoundException。可能是这个问题被问了几次,我没有找到解决办法。我想将图像作为文件读取…提前感谢。


共2个答案

匿名用户

为了便于说明,我创建了一个带有源目录的项目

src

下面的来源我有一个带有主要类的包星

我创建了另一个源目录xxx,并将其放入文件a.txt

我还在< code>xxx下创建了一个名为< code>text的目录,并放入了一个名为< code>b.txt的文件

我还在src下创建了一个名为其他的目录,并放入一个名为c. txt的文件中

我的代码是

    URL url = Main.class.getResource("/a.txt");
    System.out.println(url);
    URL url2 = Main.class.getResource("/text/b.txt");
    System.out.println(url2);
    URL url3 = Main.class.getResource("/other/c.txt");
    System.out.println(url3);

我的输出是

D: \temp(温度)

jar: file:/D:/temp/ab.jar! /a.txt

jar: file:/D:/temp/ab.jar! /text/b.txt

jar:file:/D:/temp/ab.jar!/其他/c.txt

编辑

由于您不想使用文件,而只想使用InputStream,因此您可以使用

InputStream fis = Main.class.getResourceAsStream("/a.txt");

然后用< code>ps.setBinaryStream(1,fis)设置;

匿名用户

考虑以下包结构

/
/testing_package
/testing_package/Main.java
/testing_package/Image.png

现在这是一个获取Image. png并将其放入数据库的程序

public class Main {
    public static void main(String...args) {
        System.out.println(Main.class.getResource("image.jpg"));
        //PreparedStatement as ps
        ps.setBinaryStream(1, Main.class.getResourceAsStream("image.jpg")));
    }
}

使用< code>getResource(...)或< code>getResourceAsStream(...)使用要调用其函数的类实例的相对位置。

也看看这个答案