2011-11-20 4 views
0

Android에서/data 파티션에서 파일을 읽으려고합니다. 테스트 애플리케이션을 작성한 다음 에뮬레이터에서 시작했습니다. 그런 다음/data/mydir/아래에 file1을 복사하려면 "adb push local_path_to_file/data/mydir/file1"을 사용했습니다. 파일 시스템에서 파일 읽기

은 지금은 내 응용 프로그램에서 다음을 시도하고 아무 반응이 없습니다 :(

여기

이 코드 조각 내 코드에 어떤 문제가있는/데이터에 저장된 파일을 읽는 방법 :?

  try { 

      File source = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/data/pu/file1");  
      InputStream is = new FileInputStream(source); 
      String fileStr = new String(ReadBytesOfFile(is).toString); 
      System.out.println("file out ="+ fileStr); 
      is.close(); 
      } 
      catch(IOException e){ 
       Log.d("file","NOT FOUND"); 
      } 


     public byte [] ReadBytesOfFile (InputStream input) throws IOException { 
      long length = input.available(); 
      byte[] rbuffer = new byte[(int) length]; 
      input.read(rbuffer); 
      return rbuffer; 
     } 
+0

나는 또한 그냥 시도 : Environment.getExternalStorageDirectory() + "/ 데이터/pu/file1" – user489152

답변

2

첫째, 당신은 위치가 getFilesDir() 귀하에게 반환에서 제외하고, 생산 /data에 파일을 저장할 수 없습니다, 그래서 당신은 정말 당신의 접근 방식을 재고 할 필요가있다.

둘째, /data에서 읽으려고하지 않습니다. 코드는 /dataEnvironment.getExternalStorageDirectory() 안에 있습니다. Environment.getExternalStorageDirectory()의 정확한 위치는 장치 및 OS 버전에 따라 다르지만 가장 일반적인 위치는 /mnt/sdcard입니다. 따라서 현재 이 아닌 /mnt/sdcard/data과 같은 것을 읽으려고합니다.

Here is the documentation Android의 데이터 저장 공간입니다.

+0

감사합니다. 또 다른 질문인데, sdcard 디렉토리는 읽기 전용으로 마운트 된 것 같습니다. 그러면 어떻게 파일을이 파티션으로 밀어 넣거나 복사 한 다음 그 파티션에서 읽을 수 있습니까? 나는 실제로 내가 sdcard에서 읽고 있다고 생각했다! – user489152

+0

@ user489152 : 에뮬레이터에 에뮬레이트 된 SD 카드가없는 것 같습니다. AVD Manager를 사용하여 정의해야합니다. 디렉토리에 관해서 "내부"가 무엇을 의미하는지 모를 경우, 제가 당신을 도울 수있는 방법이 거의 없습니다. – CommonsWare

+0

감사합니다. 내 파일을/sdcard/data 디렉토리로 옮겼을 때 작동합니다. – user489152

관련 문제