Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 Android-getFilesDir().lstFiles()是否返回null?_Java_Android_File Handling - Fatal编程技术网

Java Android-getFilesDir().lstFiles()是否返回null?

Java Android-getFilesDir().lstFiles()是否返回null?,java,android,file-handling,Java,Android,File Handling,我想读出我的应用程序的私有文件目录中每个文件的第一行。 我正在使用以下代码: String[] f ={}; File[] files = con.getFilesDir().listFiles(); for (int i = 0; i<=files.length-1; i++){ try { FileInputStream in = con.openFileInput(files[i].getName());

我想读出我的应用程序的私有文件目录中每个文件的第一行。 我正在使用以下代码:

    String[] f ={};
    File[] files = con.getFilesDir().listFiles();
    for (int i = 0; i<=files.length-1; i++){
        try {
            FileInputStream in = con.openFileInput(files[i].getName());
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            f[i]=br.readLine();
            br.close();
            in.close();
        }catch(Exception e){
            Log.e("File input reading", e.getMessage());
        }
    }
    return f;
String[]f={};
File[]files=con.getFilesDir().listFiles();
对于(int i=0;i
因为listfiles()返回null

不,它没有。否则,在执行
files.length
时,将出现
NullPointerException

Logcat总是说“E/文件输入读取﹕ 长度=0;索引=0“

如果您的
Log
呼叫是:

Log.e("SomeIdentifyingTag", "File input reading", e);
然后,您将看到Java堆栈跟踪和异常的完整细节

这里有一个bug:

f[i]=br.readLine();
f
是一个零长度数组。由于它没有元素,因此不能为其任何元素赋值。如果希望
f
具有与
文件相同数量的元素,则需要在初始化
文件后的某个时间将
f
初始化为
新字符串[files.length]


另一个错误是,您没有检查
文件[i]
是文件还是目录。IIRC,
listFiles()
可以返回目录,包括像
这样的虚拟目录。

谢谢您的回答。我使用了您的提示进行数组初始化。您可以查看上面的编辑以了解我的解决方案。(顺便说一句,我不需要检查它是fle还是目录,因为只有文件)
f[i]=br.readLine();