Categories
SugiBlog ホームページ制作・システム開発

SDカードからファイルを読み込む

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

3,305 views

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*