こんにちはAndroid=開発について学び始めました。ファイルからテキストを読み取るアプリを構築しようとしています。インターネット全体を検索してきましたが、方法が見つからないようですそうするので、いくつか質問があります。
1.これを行う方法? Androidで行ごとにファイルを読み取るための好ましい方法は何ですか?
2.どこにファイルを保存すればよいですか?それはrawフォルダーにあるべきでしょうか、それともアセットフォルダーにあるべきでしょうか?
これは私がすでに試したものです: "(問題はファイルの検索にあるのではないかと思います。)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.filereader);
try {
// open the file for reading
InputStream fis = new FileInputStream("text.txt");
// if file the available for reading
if (fis != null) {
// prepare the file for reading
InputStreamReader chapterReader = new InputStreamReader(fis);
BufferedReader buffreader = new BufferedReader(chapterReader);
String line;
// read every line of the file into the line-variable, on line at the time
do {
line = buffreader.readLine();
// do something with the line
System.out.println(line);
} while (line != null);
}
} catch (Exception e) {
// print stack trace.
} finally {
// close the file.
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
そのファイルをどのように処理するかによって異なります。目的がファイルの読み取りだけである場合は、アセットフォルダーが適しています。作業が終わったときにそのファイルに情報を保存する場合は、デバイスに保存する必要があります。
オプション番号2を選択した場合、他のアプリケーションにファイルを読み取らせるかどうかを決定する必要があります。詳細については、次のアドレスをご覧ください。
http://developer.Android.com/training/basics/data-storage/files.html
それ以外の場合は、標準のJavaプロシージャを使用して、説明したとおりに直接デバイスに読み書きできます。ただし、ファイルパスはおそらく
「/sdcard/text.txt」
編集:
これは、始めるためのコードの一部です
FileInputStream is;
BufferedReader reader;
final File file = new File("/sdcard/text.txt");
if (file.exists()) {
is = new FileInputStream(file);
reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while(line != null){
Log.d("StackOverflow", line);
line = reader.readLine();
}
}
ただし、text.txt
sdcardのルート。
ファイルがアセットフォルダーにある場合は、次の操作を行う必要があります。
BufferedReader reader;
try{
final InputStream file = getAssets().open("text.txt");
reader = new BufferedReader(new InputStreamReader(file));
String line = reader.readLine();
while(line != null){
Log.d("StackOverflow", line);
line = reader.readLine();
}
} catch(IOException ioe){
ioe.printStackTrace();
}
コードはよさそうですが、ファイルの読み取りは非同期で行う必要があります。ファイルパスについては、APKにバンドルするファイルか、アプリデータフォルダーにダウンロードするファイルかによって異なります。 Androidのどのバージョンをターゲットにしているのかに応じて、リソースで試してみます...
アセットから読み取るには、アクティビティでこれを行うことができます。
reader = new BufferedReader(
new InputStreamReader(getAssets().open("filename.txt")));