Android/File IO

안드로이드 파일 입출력 예제

Soul-Learner 2012. 5. 23. 15:49

Android 에서 파일 입출력(File IO) 3가지 방법

기본 응용프로그램(application's private data area) 메모리에 있는 파일 입출력

SD Card (응용프로그램 간의 공유 메모리)에 있는 파일 입출력

Resource로 포함된 파일(Read Only)


기본 응용프로그램 메모리(application's private data area)는 eclipse의 DDMS 의 File Explorer 의 data/data/files/ 안에서 참조할 수 있다.

package com.example.tidewriter;


import java.io.*;


import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.View;

import android.widget.EditText;


public class MainActivity extends Activity {

String fileName = "sample.txt";

EditText editText;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

    

    public void onBtnClick(View v) {

    String str = null;

    editText = (EditText)findViewById(R.id.editText1);

    str = editText.getText().toString()+"|";

    editText = (EditText)findViewById(R.id.editText2);

    str += editText.getText().toString()+"|";

    editText = (EditText)findViewById(R.id.editText3);

    str += editText.getText().toString()+"|";

    editText = (EditText)findViewById(R.id.editText4);

    str += editText.getText().toString()+"|";

    editText = (EditText)findViewById(R.id.editText5);

    str += editText.getText().toString();

    fileWrite(str);

   

    fileRead();

    }

    

    private void fileWrite(String str) {

    try {

FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);

PrintWriter pw = new PrintWriter(fout);

pw.println(str);

pw.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

    }

    

    private void fileRead() {

    try {

FileInputStream fin = openFileInput(fileName);

BufferedReader br = new BufferedReader(new InputStreamReader(fin));

String line = br.readLine();

Log.d("파일읽기", line);

br.close();

} catch (Exception e) {

e.printStackTrace();

}

    }

}



SD Card에 있는 파일의 입출력(읽고 쓰기 가능, 다른 프로그램에서도 공유가능함)

    File log = new File(Environment.getExternalStorageDirectory(), "Log.txt");
   
try {
       
out = new BufferedWriter(new FileWriter(log.getAbsolutePath(), false));
       
out.write(new Date().toString());
       
out.write(" : \n");
   
} catch (Exception e) {
       
Log.e(TAG, "Error opening Log.", e);
   
}


프로젝트의 리소스 파일 읽기(Read Only)


package my.android.test; import java.io.*; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class FileIO extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); rawTxtRead(R.raw.sample); } public void rawTxtRead(int resourceId) { InputStream is = this.getResources().openRawResource(resourceId); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String readLine = null; try { while ((readLine = br.readLine()) != null) { Log.d("TEXT", readLine); } is.close(); br.close(); } catch (IOException e) { e.printStackTrace(); } } }


For Abhilash in India ^^

package com.example.androidapp; import java.io.*; import java.util.ArrayList; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; public class SMSActivity extends Activity { ListView lview; String Body = "" ; String number =""; ArrayList<String> smslist=new ArrayList<String>(); ArrayAdapter<String> itemAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lview =(ListView)findViewById(R.id.lv); itemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,smslist); lview.setAdapter(itemAdapter); ContentResolver cr = getContentResolver(); Cursor c = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null); while(c.moveToNext()){ number = c.getString(c.getColumnIndexOrThrow("address")); Body = c.getString(c.getColumnIndexOrThrow("body")).toString(); smslist.add( number + ":" + "\n" + Body); } itemAdapter.notifyDataSetChanged(); c.close(); saveToFile(smslist); readFromFile("smslist.txt"); } private void saveToFile(ArrayList<String> smslist) { PrintWriter toFile = null; try{ toFile = new PrintWriter(openFileOutput("smslist.txt", MODE_PRIVATE ) ); for(int i=0;i<smslist.size();i++) { toFile.println(smslist.get(i)); } toFile.close(); }catch(Exception e) { } } private ArrayList<String> readFromFile(String fileName) { BufferedReader br = null; String line = null; ArrayList<String> smslist = new ArrayList<String>(); try{ br = new BufferedReader(new InputStreamReader(openFileInput(fileName))); while((line=br.readLine())!=null) { smslist.add(line); } br.close(); }catch(IOException ioe) { } return smslist; } }