为什么我的getString()方法总是返回null?

时间:2014-10-30 09:40:22

标签: java string null return-value

我有一个问题,我昨天做的文件查找功能,用于返回文件的方法,但它总是返回null,所以我改变它返回文件路径,它仍然返回null偶然,它不是,这是代码和输出:

public static String lookupFile(File file, String name) {
    File[] list = file.listFiles();
    if(list != null) {
        for (File fil : list) {
            String n = fil.getName().replace(name, "");
            if (n.length() != 0) {
                if(fil.isDirectory())
                    lookupFile(fil , name);
            } else if (n.length() == 0) {
                String g = fil.toPath().toString();
                System.out.println(fil.getName());
                System.out.println(g);
                return g;
            }
        }
    }
    return null;
}

我使用它的方式是这样的:

String n = Sys.lookupFile(new File(Sys.getAppData() + "g/"), "ggf.rtf");
        System.out.println(n);

输出是这样的:

ggf.rtf
C:\Users\NAME\AppData\Roaming\g\h - Copy (5) - Copy\h - Copy (5)\ggf.rtf
null

为什么它返回后会变为null?在返回字符串之前,它会将其打印出来,而且我们可以看到它不是空的,所以出了什么问题?

3 个答案:

答案 0 :(得分:1)

null返回您在控制台中获得的lookupFile()(代码最终到达最终的return null语句)。调试方法,看看为什么会发生这种情况,请查看if / else条件。

答案 1 :(得分:0)

试试这个

public static String lookupFile(File file, String name) {
    File[] list = file.listFiles();
    String returnValue = null;
    if(list != null) {
        for (File fil : list) {
            String n = fil.getName().replace(name, "");
            if (n.length() != 0) {
                if(fil.isDirectory())
                    returnValue = lookupFile(fil , name);
            } else if (n.length() == 0) {
                String g = fil.toPath().toString();
                System.out.println(fil.getName());
                System.out.println(g);
                return g;
            }
        }
    }
    return returnValue;
}

答案 2 :(得分:0)

通过添加新函数和静态变量来修复它,如下所示:

private static String gg = null;

public static File lookup(File file, String name) {
    gg = null;
    return new File(lookupFile(file, name));
}

private static String lookupFile(File file, String name) {
    File[] list = file.listFiles();
    if(list != null) {
        for (File fil : list) {
            String n = fil.getName().replace(name, "");
            if (n.length() != 0) {
                if(fil.isDirectory())
                    lookupFile(fil , name);
            } else if (n.length() == 0) {
                String g = fil.toPath().toString();
                System.out.println(fil.getName());
                System.out.println(g);
                gg = g;
                return gg;
            }
        }
    }
    return gg;
}