4

私は MultipartEntity を使用しており、raw フォルダー内のファイルを参照しようとしています。コードは次のとおりです。

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart(new FormBodyPart("file", new FileBody(new File("test.txt"))));

test.txt ファイルは res/raw フォルダーにあります。コードを実行すると、次の例外が発生します: FileNotFoundException: /test.txt: open failed: ENOENT (No such file or directory)

誰でもこれで私を助けることができますか?

4

2 に答える 2

9

File残念ながら、raw フォルダーから直接オブジェクトを作成することはできません。それをコピーするか、SDカードまたはアプリケーションのキャッシュ内にコピーする必要があります。

この方法でファイルの InputStream を取得できます

    InputStream in = getResources().openRawResource(R.raw.yourfile);

  try {
       int count = 0;
       byte[] bytes = new byte[32768];
       StringBuilder builder = new StringBuilder();
       while ( (count = in.read(bytes,0, 32768)) > 0) {
           builder.append(new String(bytes, 0, count));
       }

       in.close();
       reqEntity.addPart(new FormBodyPart("file", new StringBody(builder.toString())));
   } catch (IOException e) {
       e.printStackTrace();
   }
于 2013-05-24T18:31:47.503 に答える
3

ファイルを /res/raw ディレクトリに配置すると、ファイルがインデックス化され、R ファイルの ID でアクセスできるようになります。

InputStream is = getResources().openRawResource(R.raw.test);
System.out.println(is);
于 2013-05-24T18:52:23.267 に答える