Java:从与Java文件相同的文件夹中读取图像
我有一些代码可以从与java文件相同的目录中读取图像文件,但目前我只能在给定entier路径的情况下才能让它工作Java:从与Java文件相同的文件夹中读取图像,java,file-io,javax.imageio,Java,File Io,Javax.imageio,我有一些代码可以从与java文件相同的目录中读取图像文件,但目前我只能在给定entier路径的情况下才能让它工作 picture = new JLabel(new ImageIcon(ImageIO.read(new File("C:\\Users\\...\\ogre.png")))); 该图像与java文件位于同一文件夹中。但是,当我尝试使用“ogre.png”或“\\ogre.png”或类似方法时,它不起作用 我的问题是: 我最终会导出到一个JAR,一旦JAR被创建,这会影响到它吗?(我
picture = new JLabel(new ImageIcon(ImageIO.read(new File("C:\\Users\\...\\ogre.png"))));
该图像与java文件位于同一文件夹中。但是,当我尝试使用“ogre.png”
或“\\ogre.png”
或类似方法时,它不起作用
我的问题是:
这是标准的方法。。。(当所有东西都在罐子里时,它就会工作)
OneOfYourClass
是您拥有的类(可能是主类)
package/pathTo/image/
是从此类中找到图像的路径您需要设身处地为应用程序的最终用户着想。最终用户只有一个包含应用程序的jar文件。根本没有java源文件。应用程序应该在哪里读取图像?它们应该是最终用户的图像,并且位于最终用户的硬盘上吗?或者它们应该与应用程序一起交付和嵌入?请尝试getClass().getResource(…)
@jbnize如果图像是预定义的,并且可能会在jar文件中,则不能使用文件IO加载它们。您必须使用类加载器从类路径加载它们,就像从文件系统(开发期间)或jar文件(捆绑后)加载类一样newimageicon(MyClass.class.getResource(“/com/mycompany/myapp/images/ogre.png”)
,假设png文件在包com.mycompany.myapp.images
中。如果图像文件在同一文件夹中,路径是否应该为空?就像在“ogre.png”
对不起!我习惯于用计算机读取i文件java@JackMoulson是的,但我通常会建议您开始使用package…啊,它在一个名为softdev
的包中,因此这将使路径“softdev/src/ogre.png”
?@Jack Moulson您有一个名为src的包吗???通常,您的代码位于名为src的文件夹中(这是base)。。。路径是作为加载程序使用的类的相对路径。@Jack Moulson如果您有疑问,请将png与用于加载它的类(同一文件夹)放在一起,并按照第一条注释中的指示进行操作
URL url = OneOfYourClass.class.getResource("package/pathTo/image/ogre.png");
ImageIcon image = new ImageIcon(url);