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();