3
public void loadFile(int level){

    try {
                //Create new file
                levelFile = new File("assets/levels.txt");
                fis = new FileInputStream(levelFile);
                isr = new InputStreamReader(fis);    
                reader = new BufferedReader(isr);

                //Code to read the file goes here

ただし、このコードを使用すると、上記のエラー ( java.io.FileNotFoundException) が発生し続けます。

ファイルは間違いなく Assets フォルダーに存在し、正しい名前が付けられています。"levels.txt"ここで同様の質問がいくつか見つかりました。プロジェクトの更新、プロジェクトのクリーニング、代わりに使用するなど、さまざまなことを試しましたが、"assets/levels.txt"このエラーが発生し続けます。

理由はありますか?

4

2 に答える 2

7

パッケージの外側を扱っているgetResource()ため、問題の最良の解決策になります。

URL url = getClass().getResource("/assets/levels.txt");
File f = new File(url.toURI());
//....

getResourceAsStream()または、メソッドを使用して入力ストリームを直接取得できます。

InputStream  is= getClass().getResourceAsStream("/assets/levels.txt");
isr = new InputStreamReader(is); 

FileInputStreamを使用する必要がないため、より優れています。

URISyntaxExceptionでキャッチするFileNotFoundExceptionか、スローするように宣言する必要があることに注意してください。

于 2013-07-14T09:38:29.803 に答える
6

Android プロジェクトでアセット ファイルのコンテンツを読み取る正しい方法は、AssetManager. アセット ファイルは、assets/Android プロジェクトのフォルダーに配置するファイルです。これについては、Android ドキュメントのAccessing Resourcesページのサイドバーに簡単に記載されています。

特に、ファイルを開いて次のようassets/levels.txtに作成できます。BufferedReader

InputStream stream = context.getAssets().open("levels.txt");
BufferedReader reader = new BufferedReader(
            new InputStreamReader(stream));

open呼び出しの引数は単にlevels.txtであり、 ではないことに注意してくださいassets/levels.txt

詳細については、 AssetManager の完全なドキュメントを参照してください。

于 2013-07-14T09:30:45.070 に答える