例外は発生していませんが、実行すると...
InputStream deckFile = context.getAssets().open("cards.txt");
そして、deckFile.read() は -1 を返します。ファイルは正しいフォルダにあり、空ではありません。
これは世界で最も簡単なことのはずです...
編集: AssetManager は実際に「cards.txt」をそこにあるとリストしているので、問題にはなりません。
例外は発生していませんが、実行すると...
InputStream deckFile = context.getAssets().open("cards.txt");
そして、deckFile.read() は -1 を返します。ファイルは正しいフォルダにあり、空ではありません。
これは世界で最も簡単なことのはずです...
編集: AssetManager は実際に「cards.txt」をそこにあるとリストしているので、問題にはなりません。
以下のコード行を試してください
InputStream is = getAssets().open("test.txt");
int size = is.available();
byte[] buffer = new byte[size]; //declare the size of the byte array with size of the file
is.read(buffer); //read file
is.close(); //close file
// Store text file data in the string variable
String str_data = new String(buffer);
使用可能なメソッドは、アセットの合計サイズを返します。
/assets
Android プロジェクトの下のディレクトリにテキスト ファイルを配置します。AssetManager
クラスを使用してアクセスします。
AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");
または、/res/raw
ファイルにインデックスが付けられ、R ファイルの ID でアクセスできるディレクトリにファイルを配置することもできます。
InputStream is = getResources().openRawResource(R.raw.test);
編集:
ファイルを読み取るには、次の方法を試してください。
public String convertStreamToString(InputStream p_is) throws IOException { /* * To convert the InputStream to String we use the * BufferedReader.readLine() method. We iterate until the BufferedReader * return null which means there's no more data to read. Each line will * appended to a StringBuilder and returned as String. */ if (p_is != null) { StringBuilder m_sb = new StringBuilder(); String m_line; try { BufferedReader m_reader = new BufferedReader( new InputStreamReader(p_is)); while ((m_line = m_reader.readLine()) != null) { m_sb.append(m_line).append("\n"); } } finally { p_is.close(); } Log.e("TAG", m_sb.toString()); return m_sb.toString(); } else { return ""; } }
きっとお役に立ちます。
問題は、ファイルが大きすぎて、拡張子が「.txt」であるため圧縮されていたことです。ファイル名を通常圧縮される形式「.mp3」にリネームすることで問題は発生しませんでした