안드로이드 개발 질문/답변
(글 수 45,052)
String ext = Environment.getExternalStorageState(); if (ext.equals(Environment.MEDIA_MOUNTED)) { mSdPath = Environment.getExternalStorageDirectory().getAbsolutePath(); } else { mSdPath = Environment.MEDIA_UNMOUNTED; } File dir = new File(mSdPath + "/dir"); dir.mkdir(); File file = new File(mSdPath + "/dir/file.txt"); try { FileOutputStream fos = new FileOutputStream(file); String str = sb.toString(); fos.write(str.getBytes()); fos.close(); Toast.makeText(context, "write success", Toast.LENGTH_SHORT).show(); }
위의 코드처럼 절대경로를 가져와서 디렉토리와 파일을 생성하고 파일에 데이터를 저장합니다.
문제는 다음 저장시 앞에 저장된 내용이 없어진다는 것입니다.
파일이 계속 다시 생성되서 그런거같은데요
누적되게 저장하려면 어떻게 해야하나요?
너무 초보적이라고 그냥지나치지 마시고 자세한 설명 부탁드립니다.
그리고 추가적인 질문입니다. 한글을 저장하면 깨져버립니다.
게시판을 뒤져보니 애뮬레이터 문제라고 하시던데요 맞나요?
2010.10.16 15:44:53
답변감사합니다. 파일저장시 입력으로받은 한글이 아예 깨져서 저장됩니다.
그리고 링크가서보니까 파일에 저장하는거 까지 나와있더군요^^ 제가 궁금한건 누적해서 저장하는방법입니다 ^^
2010.10.16 23:25:59
outputstream을 사용하는데 printWriter를 어떻게 사용하나요?
FileOutputStream fos = new
FileOutputStream(file); 이줄에서 계속 경로에다가 파일을 생성해서 그런거같습니다만 ㅜㅜ
그래서 파일 없는 경우에만 생성해주고 있을경우 저장만하게 하였습니다
FileOutputStream in = context.getApplicationContext().openFileOutput(mSdPath + "/dir/file.txt", Context.MODE_APPEND);
String str = sb.toString();
in.write(str.getBytes());
in.close();
오류는 나지 않았지만 파일에 저장이 안됩니다 ㅜㅜ
2010.10.17 20:22:34
PrintWriter에 outputStream 생성자로 받는데요....
Wraps either an existing
PrintWriter에 달려있는 자바독입니다. outputStream을 wrap한다고 첨에 쓰여있는데요...
Wraps either an existing
OutputStream
or an existing Writer
and provides convenience methods for printing common data types in a human readable format. No IOException
is thrown by this class. Instead, callers should use checkError()
to see if a problem has occurred in this writerPrintWriter에 달려있는 자바독입니다. outputStream을 wrap한다고 첨에 쓰여있는데요...
아래 링크를 참조해 보시면 어떨런지요.
http://www.roseindia.net/java/example/java/io/java-append-to-file.shtml
한글을 저장하면 어떻게 깨진다는 말이죠? 다시 읽어들였을때 글자가 깨져있나요?