안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요,
이런식으로 작성해보았습니다.
웹상에, 예를 들면 www.androidpub.com/test.xml 이라는 파일이 있다고 했을때
이 파일을 받아서 파일 자체로 저장하려고 합니다.
그래서 대략
String feed = urlBuilder("http://www.androidpub.com/test.xml"); InputStream in = httpconnection.getInputStream(); if(in != null) { try { BufferedInputStream bis = new BufferedInputStream(in); FileOutputStream fos = new FileOutputStream("test.xml"); int n = 0; while((n = bis.read()) != -1) { fos.write(n); } fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
이런식으로 작성해보았습니다.
그런데 첫번째로 파일이 저장되지 않은 문제가 있고...
/data/data/com.android.test/ 디렉토리를 다 뒤져봐도 test.xml 이라는 파일이 생성되어 있진 않네요.
두번째로.. 제가 자바쪽 개발은 안해봐서 잘 모르겠지만.. 왠지 웹상에 있는 파일 다운로드는 더 간단한 방법이 있지 않을까
하는 생각이 들었습니다.
어떤 문서를 찾아보니 channel 이라는걸 쓰면 더 빠르다고 나오는데.. 정확히 어떻게 적용해야 할지도 잘 모르겠구요..
어떤 문서를 찾아보니 channel 이라는걸 쓰면 더 빠르다고 나오는데.. 정확히 어떻게 적용해야 할지도 잘 모르겠구요..
위의 코드에 어떤 문제가 있는지... 그냥 단순히 웹상에 있는 xml 파일을 저장하는데 더 쉬운 방법이 이나 효율적인 방법이 있는지
조언 부탁드립니다.
감사합니다!.
2009.11.25 15:16:10
Context의 openFileOutput 메서드를 이용하시기 바랍니다. 아니면 외부 저장소의 디렉토리를 정확히 지정하여 sdcard에 저장하시던지요.
2009.11.25 15:27:36
회색님// 답변 감사드립니다. 안그래도 조금 아래에 있는 파일 관련된 글을 보고 그 부분을 수정하여, data/data/com.android.test/files 에 저장하는데는 성공하였습니다. 그런데, 혹시 웹에 있는 파일을 받아오는 방법은 이것뿐인지 궁금합니다. 에뮬레이터에서 테스트해보니, 73KB 를 받아오는데 약 10초 (10566ms) 가 걸리는데, 더 효율적인 방법이 있는지 알고싶습니다.
2009.11.28 12:40:36
저기 궁금한게 있어서요. data/data/com/android.test/files 라고 하셨는데.
그 경로가 궁금합니다.(에뮬레이터 또는 안드로이드 단말 경로)
이건 sdk/tools/ 의 경로인지
아니면 이클립스 workspace/의 경로인지 궁금합니다. ^^
답변 주시면 감사드립니다.
그 경로가 궁금합니다.(에뮬레이터 또는 안드로이드 단말 경로)
이건 sdk/tools/ 의 경로인지
아니면 이클립스 workspace/의 경로인지 궁금합니다. ^^
답변 주시면 감사드립니다.
2009.11.29 14:29:38
smile님// 둘다 아닙니다 ^^;; 에뮬레이터 혹은 진짜 핸드폰 안의 file system 경로를 의미합니다. 이클립스의 workspace든, sdk/tools든.. 전부 자기 컴퓨터의 경로일뿐이죠. 이클립스에서 file explorer 에서 접근하거나 (DDMS탭으로 가시면 쉽게 찾으실 수 있습니다. 혹은 이클립스의 Window - Show View 메뉴에서 찾으실 수 있습니다. - Others에서 android 부분 찾아보시면 있습니다.)
아니면, sdk/tools 에서 adb shell 명령으로 직접 shell에 들어가셔서 cd data/data/패키지명/ 으로 접근 가능합니다.
아니면, sdk/tools 에서 adb shell 명령으로 직접 shell에 들어가셔서 cd data/data/패키지명/ 으로 접근 가능합니다.