0

これでxml解析用のファイルにアクセスしようとしています:

InputStream inputStream = context.getAssets().open("/mnt/sdcard/cat/bird/flowers.xml");

実行すると、次のエラーが表示されます。

06-13 23:13:22.620: W/System.err(3118): java.io.FileNotFoundException: /mnt/sdcard/cat/bird/flowers.xml
06-13 23:13:22.620: W/System.err(3118):     at android.content.res.AssetManager.openAsset(Native Method)
06-13 23:13:22.620: W/System.err(3118):     at android.content.res.AssetManager.open(AssetManager.java:314)
06-13 23:13:22.620: W/System.err(3118):     at android.content.res.AssetManager.open(AssetManager.java:288)

ファイルのスペルを確認し、場所を数回確認しました。ファイルはそこにあり、正しい名前が付けられています。ここで何が起こっているのですか?

ありがとう

4

3 に答える 3

5

getAssets().open(...)/assetsプロジェクトのディレクトリに配置することにより、.apk ファイルでパッケージ化したファイルにアクセスするために使用されます。

このパスでファイルを開こうとしています...

/mnt/sdcard/cat/bird/flowers.xml

...これは、AssetManager最初に次のパスでプロジェクトに配置したパッケージ化されたファイルを検索しようとすることを意味します...

/assets/mnt/sdcard/cat/bird/flowers.xml
于 2012-06-13T23:52:40.783 に答える
3

次の権限があることを確認してください。(読むだけなら必要ないかもしれません)。また、一部のデバイスでは、SD カードからの読み取りが制限されています。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

また、ハードコードされたパスを使用しないでください。次を使用して外部ストレージ パスを取得します。

String path = Environment.getExternalStorageDirectory() + "/cat/bird/flowers.xml";
于 2012-06-13T23:43:49.620 に答える
0

getAssets()通常、プロジェクトのアセット フォルダー内のファイルにアクセスするために使用されます。次のようなものを使用する必要があります。

InputStream inputStream = new FileInputStream("//sdcard//cat//bird//flowers.xml");
于 2012-06-13T23:56:49.667 に答える