Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问SRC文件夹中的文件?_Java_Image_Null - Fatal编程技术网

Java 如何访问SRC文件夹中的文件?

Java 如何访问SRC文件夹中的文件?,java,image,null,Java,Image,Null,嗨,我一直在尝试从SRC文件夹中访问图像文件,这样我就可以直接从jar中运行它了。不幸的是,它没有加载它们,我可以请一些帮助。它是空指针异常,无法读取输入文件。这是文件夹的位置和我在代码中输入的内容。代码:“/sprites/mapsheet2.png”目录:C:\Users\Lucas\workspace\vigilite\src\sprites\mapsheet2.png如果需要任何额外的信息,请告诉我,我会发送给你。可以加载.jar文件中的资源:getClass().getResource

嗨,我一直在尝试从SRC文件夹中访问图像文件,这样我就可以直接从jar中运行它了。不幸的是,它没有加载它们,我可以请一些帮助。它是空指针异常,无法读取输入文件。这是文件夹的位置和我在代码中输入的内容。代码:“/sprites/mapsheet2.png”目录:C:\Users\Lucas\workspace\vigilite\src\sprites\mapsheet2.png如果需要任何额外的信息,请告诉我,我会发送给你。

可以加载.jar文件中的资源:getClass().getResource() 它返回具有正确路径的URL

Image icon = ImageIO.read(getClass().getResource("image´s path"));

您可以在.jar归档文件中打包所有必需的资源。并使用

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("res\file.img")

可以使用imageIO转换为图像。

您可以尝试将图像作为ByteArrayInputStream加载到BuffereImage中。大概是这样的: BuffereImage img=null; 试一试{ BufferedInputStream sc=新的BufferedInputStream(ImageLoad.class.getResourceAsStream(文件)); ArrayList in=新的ArrayList(); 字节b=空; 而((b=sc.read)!=null)在.add(b)中; 字节[] 字节=新字节[in.size()];
对于(int i=0;i 然后根据需要使用图像!唯一的问题是,您必须将sprites/mapsheet2.png与运行它的类放在同一个文件夹中。假设您的类是ImageLoad.java,ImageLoad.java必须与sprites/mapsheet2.png位于同一个包中。欧共体:

ImageLoad.java位于package image.load中,package image.load中是资源精灵(A Dir)和精灵/mapsheet2.png,对于该区域中需要加载的任何其他图像也是如此。如果您想加载映像并在另一个类中使用它,您可以创建一个包含上述代码的方法,然后返回一个BuffereImage。欧共体:

    public class ImageLoad {
       public static BufferedImage load(String file) throws Exception{
                BufferedInputStream sc = new BufferedInputStream(ImageLoad.class.getResourceAsStream(file));
                ArrayList<Byte> in = new ArrayList<Byte>();
                byte b = null;
                while((b = sc.read) != null)in.add(b);
                byte[]
                bytes = new byte[in.size()];                    
                for(int i = 0; i < in.size(); i ++)bytes[i] = in.get(i);
                return ImageIO.read(new ByteArrayInputStream(bytes));
                    }
               }
公共类ImageLoad{
公共静态缓冲区映像加载(字符串文件)引发异常{
BufferedInputStream sc=新的BufferedInputStream(ImageLoad.class.getResourceAsStream(文件));
ArrayList in=新的ArrayList();
字节b=空;
而((b=sc.read)!=null)在.add(b)中;
字节[]
字节=新字节[in.size()];
对于(int i=0;i
任何额外信息-请输入代码。如果需要任何额外信息,请告诉我,我会发送给你。请输入相关代码,而不仅仅是解释问题。答案都是正确的,但我相信你可能有不同的问题。构建jar文件时,构建系统是否知道需要包含这些特定资源?通常,构建系统配置会有选项来指定jar中包含哪些类型的资源。我将其设置为源文件夹吗?1)为了更快地获得更好的帮助,请发布一个。2) 到部署时,这些资源很可能会成为一种资源。在这种情况下,必须通过
URL
而不是
File
访问资源。有关如何形成
URL
.protected spritesheet s=new spritesheet(“/sprites/Blocks.png”);线程“main”java.lang.IllegalArgumentException中出现异常:输入==null!在javax.imageio.imageio.read(未知源代码)在Graphics.spritesheet.(spritesheet.java:21)在Tile.Tile.(Tile.java:11)在Tiles.Wall.(Wall.java:10)在Tiles.Tiles.(Tiles.java:7)在Core.Core.(Core.java:31)在Core.Core.main(Core.java:240)不要将输出放在注释中。这是不可读的。相反,问题应该包含输出,并对其使用代码格式。要做到这一点,请选择示例并单击消息发布/编辑表单上方的
{}
按钮。我不认为该方法是错误的。在我尝试从srchhold读取它之前,它读得非常好。谢谢大家快速可靠的帮助。无辐射社区。