티스토리 뷰

Development

[Android] 파일 입출력

devbible 2011. 11. 4. 10:42
File f = new File(파일명);

f.creatNewFile();

FileWriter fw = new FileWriter(f);

BufferedWriter bfw = new BufferedWriter(fw);

FileOutputStream fos = new FileOutputStream(파일명);


등 이런식으로 파일을 생성하여 쓸 수 있지만. 이미 쓰여진 파일 뒤로 이어서 적어지지는 않고 매번 덮어쓰기만 한다.
안드로이드에서 이렇게 덮어 쓰지않고 파일포인트를 마지막에 두고 이어서 사용할 방법을 찾아보니

FileOutputStream fos = openFileOutput("파일명",MODE_APPEND);



방법이 있었지만 이 방법에서 파일명에는 경로가 올 수 없었다.( / 사용하면 에러남) 오직 파일명만 적을 수 있으며
파일이 저장되는 경로는 /data/data/패키지명/files 디렉토리로 정해져 있어서 임의경로로 저장하여 쓸 수 없었다.
이 외 파일안에 이어서 쓸 수 있는 방법을 찾던 중 RandomAccessFile 클래스를 이용하여 파일 포인트를 마지막으로
이동하여 파일 이어쓰는 방법과 파일을 쭉 읽고 변수에 저장하여 새로 추가할 내용을 그 변수뒤에 추가한 뒤에 파일에
덮어 쓰는 방법도 있었지만 가장 간단한 방법으로는

BufferedWriter bfw = new BufferedWriter(new FileWriter(파일명,true));



코드 하나면 덮어 쓰지않고 파일을 이어쓰기가 가능하였다.



그리고 안드로이드에서 파일 입출력(외부메모리)을 하기 위해서는 Manifest에

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


permission을 넣어 줘야 한다.




기존파일에 덧붙여서 내용을 저장하려면, RandomAccessFile 클래스를 사용해야 합니다. 아래는 간단한 예제 입니다.

출처 : http://finetia.egloos.com/1422965

import java.io.IOException;
import java.io.RandomAccessFile;

public class UsingFile {
public UsingFile() {
}

public static void main(String[] args) {
try {
String name = “c:\\tmpfile.txt”;
RandomAccessFile raf = new RandomAccessFile(name, “rw”);
raf.seek(raf.length());
raf.writeBytes(“\r\n append”);
}
catch (IOException e) {
System.out.println(“Error opening file: ” + e);
}
}
}


[포스팅원본] http://ldragon.tistory.com/tag/openFileOutput

댓글