<< Android-Note
ファイルの読み書き
ディレクトリのファイルを読み書きする方法について紹介します。
ファイルの書き込み(作成)
FileOutputStreamインスタンスを作成し、write関数で書き込みます。ただし、書き込む文字列は必ずbyte型の配列に直さなければなりません。
これら処理を行ったのが次のソースです。
public class MainActivity extends Activity { private String topDirName = "MyApp_folder"; private String fileName = "myapp_file"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File top_dir = getDir(topDirName, Context.MODE_PRIVATE); //アプリのデータ領域にディレクトリを作成 String str = "content"; try{ FileOutputStream fos = new FileOutputStream(new File(topDir, fileName)); //topDirがFileインスタンスで、fileNameがファイル名 fos.write(content.getBytes(Charset.defaultCharset().name())); //ファイルにString型をbyte配列に変換したものを書きこみ fos.close(); //ストリームを閉じる。 }catch(IOException err){} } }
ディレクトリを作成してFileOutputStreamにディレクトリのFileインスタンスと作成するファイル名を渡します。
Charset.defaultCharset().name()
writeメソッドで書き込む際に上のようなメソッドを使用しましたが、これは文字コードをを環境に合わせて指定するためのものです。
ファイルの読み込み
次に先ほど作ったファイルを読み込んでみます。
コードは次のようになります。
public class MainActivity extends Activity { private String topDirName = "MyApp_folder"; private String fileName = "myapp_file"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File topDir = getDir(topDirName, Context.MODE_PRIVATE); FileChannel fc; //ファイルの情報を保持するクラス byte buffer[]; String read_str = null; try{ FileInputStream fis = new FileInputStream(new File(topDir, fileName)); fc = fis.getChannel(); buffer = new byte[(int)fc.size()]; //size関数でファイルのサイズを取得 fis.read(buffer); //ファイルの初めからファイルの大きさ分だけbufferに読み込み readStr = new String(buffer, Charset.defaultCharset().name()); //byte配列をString型に直す。 fis.close(); }catch(IOException err){} } }
byte配列にいったん読み込んでからそれをString型に変換しています。
また、読み込みでも同じく次のように文字コードを指定しています。
readStr = new String(buffer, Charset.defaultCharset().name());
© Kaz