Java 获取静态文件数组的长度?总是返回空值

Java 获取静态文件数组的长度?总是返回空值,java,arrays,static,processing,Java,Arrays,Static,Processing,第4行分配了totalFiles,因为wallTiles为空,所以总是失败。我想返回这个类中的totalFiles(称为Art),这样我就可以为我正在制作的游戏随机选择墙壁或地板纹理。谢谢收听 来自API 。。。如果此抽象路径名不表示目录,则返回null 因此,请检查目录是否存在以及是否存在文件 public PImage[] images; public static File[] wallTiles = loadFolder("data/tiles/walls"); public stat

第4行分配了totalFiles,因为wallTiles为空,所以总是失败。我想返回这个类中的totalFiles(称为Art),这样我就可以为我正在制作的游戏随机选择墙壁或地板纹理。谢谢收听

来自API

。。。如果此抽象路径名不表示目录,则返回null

因此,请检查目录是否存在以及是否存在文件

public PImage[] images;
public static File[] wallTiles = loadFolder("data/tiles/walls");
public static File[] floorTiles = loadFolder("data/tiles/floors");
public static int totalFiles = wallTiles.length+floorTiles.length;

private static File[] loadFolder(String string)
{
    File files = new File(string);

    File[] pngFiles = files.listFiles(new FilenameFilter()
    {
        public boolean accept(File directory, String fileName)
        {
            return fileName.endsWith(".png");
        };
    });
    return pngFiles;
}
从API

。。。如果此抽象路径名不表示目录,则返回null

因此,请检查目录是否存在以及是否存在文件

public PImage[] images;
public static File[] wallTiles = loadFolder("data/tiles/walls");
public static File[] floorTiles = loadFolder("data/tiles/floors");
public static int totalFiles = wallTiles.length+floorTiles.length;

private static File[] loadFolder(String string)
{
    File files = new File(string);

    File[] pngFiles = files.listFiles(new FilenameFilter()
    {
        public boolean accept(File directory, String fileName)
        {
            return fileName.endsWith(".png");
        };
    });
    return pngFiles;
}

尝试使用目录的绝对路径,而不是相对路径

公共静态文件[]wallTiles=loadFolder(“数据/瓷砖/墙”)

->


公共静态文件[]wallTiles=loadFolder(“/which_path/data/tiles/walls”)

尝试使用目录的绝对路径,而不是相对路径

公共静态文件[]wallTiles=loadFolder(“数据/瓷砖/墙”)

->



公共静态文件[]wallTiles=loadFolder(“/which_path/data/tiles/walls”)

…难道墙上没有PNG吗?@radai,他们在里面。作为小程序运行也可以,不知道这是否有帮助。“null”表示没有对象。时期你不能从null中得到任何东西。您需要调查得到null的原因,至少有一个人建议您咨询javadoc(它描述了导致返回null的情况)。添加一些日志记录或使用调试器检查您的假设。例如,您可以检查File.exists()、File.isDirectory()等的输出。您所说的是真的。逐步进入loadFolder方法,但在pngFiles返回之前,它是null。当我作为小程序进行调试时,它会被填充。它必须以某种方式处理作为PApplet的数据目录。呃,实际上它应该通过我正在使用的eclipse插件(proclipsing)以小程序的形式出现,但事实并非如此。我担心还有更深层次的问题,我将不得不咨询原作者的意见,要么进行加工,要么重写我处理艺术的方式。在程序的每一步检查你的假设。检查“文件”对象。检查exists()、isDirectory()、canRead()等。阅读javadoc,使用您认为可能有助于解决问题的任何方法。卸下过滤器,看看有什么影响。在你的过滤器的accept()方法中添加一些日志记录,等等。在你需要别人帮助之前,你可以做很多事情来调试……还有可能在/walls中没有任何PNG吗?@radai,它们在那里。作为小程序运行也可以,不知道这是否有帮助。“null”表示没有对象。时期你不能从null中得到任何东西。您需要调查得到null的原因,至少有一个人建议您咨询javadoc(它描述了导致返回null的情况)。添加一些日志记录或使用调试器检查您的假设。例如,您可以检查File.exists()、File.isDirectory()等的输出。您所说的是真的。逐步进入loadFolder方法,但在pngFiles返回之前,它是null。当我作为小程序进行调试时,它会被填充。它必须以某种方式处理作为PApplet的数据目录。呃,实际上它应该通过我正在使用的eclipse插件(proclipsing)以小程序的形式出现,但事实并非如此。我担心还有更深层次的问题,我将不得不咨询原作者的意见,要么进行加工,要么重写我处理艺术的方式。在程序的每一步检查你的假设。检查“文件”对象。检查exists()、isDirectory()、canRead()等。阅读javadoc,使用您认为可能有助于解决问题的任何方法。卸下过滤器,看看有什么影响。在筛选器的accept()方法中添加一些日志记录,等等。在需要他人帮助之前,您可以进行大量的调试。在调用listFiles()之前,我会在第8行将字符串传递给它:/。这并不意味着该目录实际存在。我可以为我喜欢的每个路径创建文件实例,即使它还不存在。请尝试调用
files.exists()
来测试目录是否存在。我添加了代码来检查目录是否存在,然后再进行筛选。png文件很抱歉,我没有回复您。你说得对,我认为目录应该存在的地方不存在。我真的很困惑,如果我把它作为一个小程序运行,那就好了。如果我将其作为应用程序运行,则不会。您的路径是相对于当前路径的<代码>System.out.println(“当前路径:+新文件(“.”).getCanonicalPath())在调用listFiles()之前,我会在第8行将字符串传递给它:/。这并不意味着该目录实际上存在。我可以为我喜欢的每个路径创建文件实例,即使它还不存在。请尝试调用
files.exists()
来测试目录是否存在。我添加了代码来检查目录是否存在,然后再进行筛选。png文件很抱歉,我没有回复您。你说得对,我认为目录应该存在的地方不存在。我真的很困惑,如果我把它作为一个小程序运行,那就好了。如果我将其作为应用程序运行,则不会。您的路径是相对于当前路径的<代码>System.out.println(“当前路径:+新文件(“.”).getCanonicalPath())这不会改变任何事情。在debug Now中逐步完成它,这不会改变任何东西。现在在调试中逐步完成它