본문 바로가기
Front-end/Android (안드로이드 앱 개발)

Android Studio , 파일 저장 읽기, 내부 저장소 / 외부 저장소

by javapp 자바앱 2020. 8. 11.
728x90

 

저장소

내부 저장소 : 애플리케이션을 통해서만 접근 가능

외부 저장소 : 단말기 내부 공유 영역, 컴퓨터와 연결하면 탐색을 통해 접근 가능

 

내부 저장소

1 내부 저장소

<내부 저장소 저장>

//내부 저장소와 연결되어 있는 쓰기 스트림 추출
//MODE_PRIVATE 파일 덮어쓰기 , MODE_APPEND 파일 새로 쓰기
FileOutputStream fos = openFileOutput("myFile.dat",MODE_PRIVATE);
DataOutputStream dos = new DataOutputStream(fos);
//데이터를 쓴다.
dos.writeInt(100);
dos.writeUTF("문자열");
dos.flush();
dos.close();

 

<내부 저장소 읽기>

FileInputStream fis = openFileInput("myFile.dat");
DataInputStream dis = new DataInputStream(fis);

int data1 = dis.readInt();
String data2 = dis.readUTF();
dis.close();

 

 

 

 


 

 

2 외부 저장소

1 권한 등록

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

권한 허락 받기

2 경로 구하기

//저장할 외부 저장소의 경로를 구한다.
File dir = Environment.getExternalStorageDirectory();
String abPath = dir.getAbsolutePath();
//패키지명을 구한다.
String packageName = getPackageName();
path = abPath + "/android/data/"+packageName;

 

 

3 외부 저장소 체크

public void checkExternalDirectory()
{
   
// 외부저장소 경로가 있는지 확인, 없으면 생성
   
File file = new File(path);
   
if(file.exists() == false)
    {
        file.mkdir();
    }
}

 

4 외부 저장소 저장

checkExternalDirectory();

FileOutputStream fos =
new FileOutputStream(path+"/sd_file.dat");
DataOutputStream dos =
new DataOutputStream(fos);
//데이터를 쓴다.
dos.writeInt(200);
dos.writeUTF(
"외부 문자열");
dos.flush();
dos.close();

 

5 외부 저장소 읽기

FileInputStream fis = new FileInputStream(path+"/sd_file.dat");
DataInputStream dis =
new DataInputStream(fis);

int data1 = dis.readInt();
String data2 = dis.readUTF();
dis.close();

 

sdcard 의 data는 앱이 삭제되면 같이 같이 삭제 된다.

댓글