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
下面的来源我有一个带有主要类
的包星星
我创建了另一个源目录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(...)使用要调用其函数的类实例的相对位置。
也看看这个答案