この記事は最終更新日から1年以上経過しています。
SDカードのファイルを読み書きする際、ContextWrapperのopenFileInput等では
読み込むことができないので、IO.FileInputStreamを使用します。
SDカードがマウントされているディレクトリのパス
Environment.getExternalStorageDirectory()
File dataDir;
private static String TAG = "READ_FILES";
String status = Environment.getExternalStorageState();
FileInputStream inputStream = null;
BufferedReader reader = null;
if (status.equals(Environment.MEDIA_MOUNTED)) {
dataDir = new File(Environment.getExternalStorageDirectory(), this.getPackageName());
dataDir.mkdirs();
File[] files = dataDir.listFiles();
for(File f : files){
try {
inputStream = new FileInputStream(f.getPath());
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
if(line != ""){
Log.d(TAG, line);
}
}
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "ファイルの読込みに失敗しました。\n" + e.getMessage()), Toast.LENGTH_LONG);
} catch (SQLException e) {
e.printStackTrace();
Toast.makeText(this, "ファイルの読込みに失敗しました。\n" + e.getMessage()), Toast.LENGTH_LONG);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "ファイルの読込みに失敗しました。\n" + e.getMessage()), Toast.LENGTH_LONG);
} finally {
try {
reader.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
else
{
new AlertDialog.Builder(this).setMessage("SDカードが必要です").setPositiveButton("OK", null).show();
} |