2011-11-20 18 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()+ "/ data/pu/file1" – user489152

答えて

2

まず、あなたは場所にgetFilesDir()によってあなたに戻ったので、あなたが本当にあなたのアプローチを再考する必要がある以外は、製造/dataにファイルを保存することはできません。

第2に、/dataからの読み取りを試みていません。あなたのコードは/dataディレクトリからEnvironment.getExternalStorageDirectory()の中にあります。 Environment.getExternalStorageDirectory()の正確な位置はデバイスとOSのバージョンによって異なりますが、最も一般的なのは/mnt/sdcardです。したがって、現在/mnt/sdcard/dataなどではなく、/dataなどから読み取ろうとしています。

Here is the documentation Androidのデータストレージです。

+0

ありがとうCommonWare。ちょっと別の質問ですが、sdcardディレクトリはREAD ONLYとしてマウントされているようです。では、どのようにファイルをこのパーティションにプッシュ/コピーしてから読み込むのですか?私は実際には、私はsdcardから読んでいたと思った! – user489152

+0

@ user489152:エミュレータにエミュレートされたSDカードがない可能性があります。 AVD Managerを使用して定義する必要があります。そして、あなたがディレクトリーに関して「内部」が何を意味するのか分からなければ、私があなたを助けることはほとんどできません。 – CommonsWare

+0

ありがとうございます。私のファイルを/ sdcard/dataディレクトリに移動したときに動作します。 – user489152

関連する問題