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

Java 如何从源文件夹中读取图像作为FileInputStream?,java,image,file,netbeans,Java,Image,File,Netbeans,我一直在尝试将图像上传到数据库。所以我做了一个browse按钮来浏览目录并获取图像。假设未选择任何图像,则会将默认图像上载到数据库。图像存储在源文件夹下名为'resources'的文件夹中。在图像中,助手是包含.java文件的文件夹,下面是resources文件夹,我将图像上载为FileInputStream,代码为 File pic=new File(imgloc); FileInputStream fis=new FileInputStream(pic); 如果未选择图像上载默认图像,则我

我一直在尝试将
图像
上传到数据库。所以我做了一个
browse
按钮来浏览目录并获取图像。假设未选择任何图像,则会将
默认图像
上载到数据库。图像存储在源文件夹下名为
'resources'
的文件夹中。在图像中,助手是包含.java文件的文件夹,下面是
resources
文件夹,我将图像上载为
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
。也许问题被问了好几次,但我没有找到解决办法。我想以文件的形式读取图像。提前谢谢。

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

src
在源代码下面,我有一个包
starthere
和一个类
Main

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

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

我还在
src
下创建了一个名为
other
的目录,并将其放入名为
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>java-cp ab.jar starthere.Main

jar:file:/D:/temp/ab.jar/a、 文本

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");

然后使用
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")));
    }
}
要记住的事情
使用
getResource(…)
getResourceAsStream(…)
时,请使用您正在调用其函数的类实例的相对位置


你不能从运行时读取源文件夹-资源应该在你的classpath上我已经在源文件夹包下创建了一个
resources
文件夹,我说你不能从运行时读取源文件夹,但是当我用
winrar
@ScaryWombat I打开jar文件时,我可以看到
resources
文件夹我想我们可以在运行时从源文件夹中读取文件。是的,兄弟,我试过这个方法。在这段代码之后,我使用了
filepic=newfile(url.to-URI)
因为我需要将它加载到数据库中,它是在CodeBro中工作的,而不是在jar中。它显示异常
非法参数异常:URI不是分层的
。我没有跟踪你。这是一个完全不同的错误。此外,此代码
文件pic=新文件(url.to URI)
一点意义都没有Bro很抱歉我犯了错误,但我的问题是我想将图像作为
文件
获取,然后只有我可以根据我的代码将其添加到数据库中,您是否获得URL?这是第一步耶,兄弟。我得到了
url
。那么请告诉我该怎么做