私のアプリのプライベートfilesdirの各ファイルの最初の行を読みたいと思います。 私は、次のコードを使用しています:Android - getFilesDir()。lstFiles()はnullを返しますか?
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;
Logcatは常に言う、 "E /ファイル入力の読み取り:長さ= 0;インデックス= 0" - LISTFILESは、()はnullを返したため、ファイルの配列の長さは、0であることを意味ししかし、このディレクトリには確かにファイルがあります。なぜそれがlistfiles()によって認識されないのですか?
EDIT: 私はこのコードでそれを解決:
public static String[] GetFiles(Context con){
File[] files = con.getFilesDir().listFiles();
String[] f = new String[files.length];
for(int i=0; i<files.length; i++){
f[i] = getFirstLine(files[i], con);
}
return f;
}
public static String getFirstLine(File f, Context con){
String ret ="error";
try {
FileInputStream in = con.openFileInput(f.getName());
BufferedReader br = new BufferedReader(new InputStreamReader(in));
ret = br.readLine();
br.close();
in.close();
}catch(Exception e){
Log.e("File input reading", e.getMessage());
}
return ret;
}
をそれはアプリのプライベートFILESDIR内の各ファイルのうち最初の行を読み取ります。
答えに感謝します。私はあなたのヒントを配列の初期化に使用しました。私のソリューションでは上記の私の編集を見ることができます。 (btw、私はそのファイルやディレクトリしかないので、そのファイルやディレクトリがあるかどうかを確認する必要はありません) – purpule