2013.05.29 10:51


보안상의 이유로 응용 프로그램은 허가받은 위치에만 파일 생성 가능.. 이 제한을 일일이 준수하기 어려우므로 
보안이 적용된 파일 관리 메서드를 별도로 제공..

FileOutputStream openFileOutput(String name, int mode)
FileInputStream openFileInput(String name)

 MODE_PRIVATE 혼자만 사용하는 배타적인 모드로 파일 생성 .. (디폴트)
 MODE_APPEND 파일이 이미 존재할 경우 덮어쓰기 모드로 열지 않고 추가 모드로 연다. ( 기존 내용에 추가 )
 MODE_WORLD_READABLE 다른 응용 프로그램이 읽을 수 있도록 허용
 MODE_WORLD_WRITEABLE 다른 응용 프로그램이 쓸 수 있도록 허용

// 파일 저장

FileOutputStreamfos = openFileOutput("text.txt", Context.MODE_WORLD_READABLE);


String str = mEdit.getText().toString();


                                

fos.write(str.getBytes());


fos.close();


mEdit.setText("Write Success");



파일 경로 : /data/data/패키지명/files/ 디렉토리 .. 


- 직접적으로 확인은 불가하다 .. ( Root Explorer(App) 이용해서 확인 .. 루트 권한 필요 )


// 파일 읽기

FileInputStream fis = openFileInput("text.txt");


byte[] data = new byte[fis.available()];


while(fis.read(data) != -1){}


fis.close();


mEdit.setText(new String(data));



*SD Card 이용 I/O

기본 java I/O 와 동일 


// 파일 저장

String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();


File dir = new File(sdPath,  "testing");


dir.mkdir();


File file = new File(dir, "file.txt");


FileOutputStream fos = new FileOutputStream(file);


String str = mEdit.getText().toString();


fos.write(str.getBytes());


fos.close();


mEdit.setText("write success");






// 파일 읽기

String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();

FileInputStream fis = new FileInputStream(sdPath + "/testing/file.txt");

byte[] data = new byte[fis.available()];

while(fis.read(data)!=-1){}

fis.close();

mEdit.setText(new String(data));



※ SD Card 디렉토리 생성시 에러상황 .. 해결법 ..


위와 같이 코드를 이용해 디렉토리 생성시 에러가 발생 할 경우 아래의 내용을 추가해야한다.. 


AndroidManifest.xml 


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 


SD card의 파일을 엑세스 하려면 Manifest에 퍼미션을 지정해야한다.


※ SD Card 관련 정보 보기


1. Environment.getExternalStorageState()

SD card 현재 상태 .. mounted : 읽고 쓰기 가능한 상태 .. unmounted : 불가능 상태

2. Environment.getExternalStorageDirectory().getAbsolutePath()

SD card 가 마운트된 경로 .. 

3. Environment.getRootDirectory().getAbsolutePath()

4. Environment.getDataDirectory().getAbsolutePath()

5. Environment.getDownloadCacheDirectory().getAbsolutePath() 

신고


Posted by injunech

티스토리 툴바