Android テキストファイルの入出力に関して


Androidでのファイルの入出力

Androidでファイルの入出力をしようとしてつまづいたのでメモ

バイナリでの出力ではなく,文字列で出力しようと思うとこうなりました.

簡単そうで難しい気がするAndroidでの入出力についてです.
いや,慣れれば簡単だと思うんですけどね.僕は慣れてなかったので.

本や,いろんなサイトを調べまくってこの結果にたどり着きました.

広告
満足度で選ばれるアンチウイルス対策ソフトなら「ESET NOD32アンチウイルス 4」


結論

import android.content.Context;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.io.FileNotFoundException;
import java.io.IOException;

public class IO_Class {
private String fileName=“data.text”;
private MainActivity main;

//初期化処理を記述
public IO_Class(MainActivity ma){
  main=ma;
}

//読み込み処理
public ArrayList<String> inputData(){
 ArrayList<String> strings=new ArrayList<String>();
 File file ;
 BufferedReader bufferedReader;
 InputStreamReader inputStreamReader; 
 try {
  String row1;
  FileInputStream fileInputStream;
  fileInputStream = main.openFileInput(fileName);
  inputStreamReader=new InputStreamReader(fileInputStream);
  bufferedReader=new BufferedReader(inputStreamReader);
  while ((row1=bufferedReader.readLine()) !=null){
   strings.add(row1);
  }
  bufferedReader.close();
  inputStreamReader.close();
  fileInputStream.close();
  return strings;
 }
 catch (FileNotFoundException e){ return strings ; }
 catch (IOException e){ return strings ; }
 }

//書き込み処理
public void outputData(ArrayList<String> strings ) {
 File file;
 FileOutputStream writerFile;
 BufferedWriter bufferedWriter;
 OutputStreamWriter outputStreamWriter;
 try {
  String path = \\data\\data\\+ main.getPackageName() + \\files\\+ fileName;
  file = new File(path);
  writerFile = main.openFileOutput(fileName, Context.MODE_PRIVATE);
  outputStreamWriter = new OutputStreamWriter(writerFile);
  bufferedWriter = new BufferedWriter(outputStreamWriter);
  for (String s : strings){
   bufferedWriter.write(s);
  }
  bufferedWriter.close();
  outputStreamWriter.close();
  writerFile.close();
 } catch (FileNotFoundException e) {
 } catch (java.io.WriteAbortedException e) {
 } catch (java.io.EOFException e) {
 } catch (IOException e) {}
}
}

はい,こんな感じです.
ArrayList<String>に入出力したいデータを入れて,引数にしたり返したりしています.

ポイントはFileとBufferedReaderとInputStreamReaderもしくはwriterを組み合わせて使っているということ.  
これで文字列での入出力ができます.

例外処理をしないとエラーが出るので処理しています.

あと,パスの指定は

\\data\\data\\+ main.getPackageName() + \\files\\+ fileName

のようにしなければいけません.
Androidではアプリごとに保存場所が決まっていて,それ以外の場所にはファイルの保存ができません.

とりあえずこれでファイルの入出力が簡単にできます.

広告

作ればわかる! Androidプログラミング第3版 [ 金宏和實 ]

価格:2,894円
(2015/9/23 19:29時点)
感想(0件)

Androidアプリ開発逆引きレシピ [ Re:Kayo-System ]

価格:3,024円
(2015/9/23 19:29時点)
感想(0件)