web-dev-qa-db-ja.com

Androidアセットtxtファイルへのパス

私がやっている:

FileReader fin = new FileReader("file:///Android_asset/myFile.txt");

Androidプロジェクトと多くのバリエーション。実行時にファイルが見つからないという例外が発生します。ファイルはassetsフォルダーに存在し、正しいため、パスが間違っている必要があります。

ここで必要な絶対パスは何ですか?

25
SK9
AssetFileDescriptor descriptor = getAssets().openFd("myfile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

FileDescriptorsで上記を使用してみてください。資産パスを収集するために私が見つけた最も確実な方法のようです。

44
kcoppock
    InputStream is = getResources().getAssets().open("terms.txt");
    String textfile = convertStreamToString(is);

public static String convertStreamToString(InputStream is)
            throws IOException {
            Writer writer = new StringWriter();

            char[] buffer = new char[2048];
            try {
                Reader reader = new BufferedReader(new InputStreamReader(is,
                        "UTF-8"));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }
            String text = writer.toString();
            return text;
    }
19

アセットフォルダー内のすべてのアセットが圧縮されているため、それを読み取っていません。拡張子を.mp3に変更してから読み取り、圧縮を停止する必要があります。

3
panthro

次のようなものを使用できますか

    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(context.getAssets().open("fileName.txt")));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
3
Nick Campion

EclipseのようなIDEを使用している場合は、クリーンにするか、binディレクトリのAPIを削除する必要がある場合があります。アセットは更新されていないようですビルドを行います。

2
AssetManager am = context.getAssets();
InputStream fs = am.open("myFile.txt");
1
user598417