7

私のコードは次のとおりです::

Scanner sc = null;
try {
    sc = new Scanner(new File("assets/mainmenu/readSourceFile.txt"));
} catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    System.out.println(e1.toString());
    e1.printStackTrace();
}

次に、logcat show exceptionjava.io.FileNotFoundException

自分のファイルを見つけるにはどうすればよいですか? 私は試した

sc = new Scanner(new File("mainmenu/readSourceFile.txt"));

しかし、それはまだスローですFilenotFoundException

私のファイルはフォルダー assets/mainmenu/readSourceFile.txt にあります

そして私はこれを試しました::

private InputStream is;
try {
        is = this.getResources().getAssets().open("mainmenu/readSourceFile.txt");
    } catch (IOException e) {
        e.toString();
    }

getAssets を使用して、Android のアセット ファイルにアクセスします。ただし、使用した場合、テキストファイルを読み取るにはどうすればよいですかInputStream

4

3 に答える 3

1

あなたはこれを試してみてください...それがうまくいくことを願っています

sc = new Scanner(new File("file:///android_asset/mainmenu/readSourceFile.txt");

編集これを試してください

AssetFileDescriptor descriptor = getAssets().openFd("mainmenu/readSourceFile.txt");
FileReader reader = new FileReader(descriptor.getFileDescriptor());

ここからコピーした アセット フォルダのパス

于 2012-12-21T04:15:48.457 に答える
0

assetsファイル システム上の通常のファイルであるかのように、Android アプリケーションのフォルダーにアクセスすることはできません(ヒント: そうではありません)。代わりに、アクティビティ/アプリケーション コンテキストでAssetManager.Callを使用して .Call を取得する必要があります。getAssets()AssetManager

これがあれば、 を使用open("mainmenu/readSourceFile.txt")して を取得できますInputStream

これで、他のものと同じように読むことができInputStreamます。Apache Commons IOは、入出力ストリームを操作するための優れたライブラリです。データを取得する方法に応じて、次を試すことができます。

  • ファイル全体を文字列に読み込みます。

    try {
        String contents = IOUtils.toString(in);
    } finally {
        IOUtils.closeQuietly(in);
    }
    
  • ファイル全体を 1 行に 1 つずつ文字列のリストに読み込みます。

    try {
        List<String> lines = IOUtils.readLines(in);
    } finally {
        IOUtils.closeQuietly(in);
    }
    
  • 一度に 1 行ずつファイルを反復処理します。

    try {
        LineIterator it = IOUtils.lineIterator(in, "UTF-8");
        while (it.hasNext()) {
            String line = it.nextLine();
            // do something with line
        }
    } finally {
        IOUtils.closeQuietly(in);
    }
    
于 2012-12-21T04:23:43.343 に答える
0

同じ問題がありました。ファイルに階層を含めるべきではないことに気付きました。誰かが将来同じ問題を抱えた場合、これは私にとってはうまくいきました。`

    InputStream is=null;

    try {
        is=activity.getAssets().open("fileInAssets.dat");
    } catch (IOException e1) {
        Log.e(TAG, "Erro while openning hosts file.");
        e1.printStackTrace();
    }

`

于 2013-04-30T15:13:27.053 に答える