Java 无法使用JFileDialog加载图像

Java 无法使用JFileDialog加载图像,java,swing,Java,Swing,最初使用jfilechooser将jpg文件上载到项目中,但切换到jFileDialog,因为我想在缩略图视图中获取图像。但是当我运行这个项目时,我得到了这个错误消息: javax.imageio.IIOException:Cant read input file! 代码如下: 我认为问题来自这一部分: File imgs =new File(filename); BufferedImage bufferedimage=ImageIO.read(imgs); 它似乎没有得到文件。请问我做错

最初使用jfilechooser将jpg文件上载到项目中,但切换到jFileDialog,因为我想在缩略图视图中获取图像。但是当我运行这个项目时,我得到了这个错误消息:

javax.imageio.IIOException:Cant read input file!
代码如下:

我认为问题来自这一部分:

File imgs =new File(filename);
BufferedImage bufferedimage=ImageIO.read(imgs);

它似乎没有得到文件。请问我做错了什么?

我只是测试了一下,方法FileDialog.getFile只返回文件名,而不是完整的路径!要获取目录,必须调用FileDialog.getDirectory

解决此问题的最简单方法是将目录和文件连接起来

filename = fd.getDirectory() + File.seperator + fd.getFile();
我不完全确定您是否需要File.separator,因为fd.getDirectory可能已经在末尾有了文件分隔符,并且您得到了多个分隔符

要解决此问题,请使用:

filename = new File(new File(fd.getDirectory()), fd.getFile()).getPath();

或者直接存储文件而不在末尾使用.getPath,并且不要在路径中存储字符串。

打印堆栈跟踪并发布它为什么
if(filename==null){}else{
而不仅仅
if(filename!=null){
只使用一个并检查fd.setFile(*.jpg”);请输入
System.out.println(filename)
在有问题的部分中,验证以该确切路径命名的文件是否确实存在System.out.println(文件名)在@Alexander中未显示任何内容,但我在FileDialog中选择了一个文件。如何在内部框架中运行JFileDialog?这行代码中出现错误:“FileDialog fd=new FileDialog(this),”选择一个文件,FileDialog.LOAD);"错误消息显示:未找到合适的构造函数@Alexander@RodneyNart因为JInteralFrame不扩展Frame,所以它不会工作,所以如果我使用jfilechooser,您能帮我获取一个代码以缩略图视图显示文件吗@Alexander@RodneyNart你可能想看看这篇帖子,尤其是被接受的答案,因为它有点像fa比原来的代码,但它应该工作。好的,谢谢。你的努力非常感谢。请与我联系rodneynart1@gmail.com.商业提案@Alexander。
filename = new File(new File(fd.getDirectory()), fd.getFile()).getPath();