携帯電話の SD カードに保存されている txt ファイルを Android のデータベース SQLite に保存する必要がありますが、その方法がわかりません。これを行うためのコードを数行書いてください。
2 に答える
に変換File
しbyte[]
て、sqlite にBLOB
データとして追加します。おそらくBase64
、スペースを最適化するためにそれらをフォーマットに変換する必要があります。
ご覧のとおり、このようなものを実装するには複数の手順があるため、一般的な概要を追加しました。何かに行き詰まっている場合は、詳細を尋ねてください。
編集:キーポイントのコードを提供します。
ファイルを byte[] に変換するには、次のスニペットを使用します。
InputStream is = new FileInputStream(file); // where file is the .txt you want to convert
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
while ((int bytesRead = is.read(b)) != -1) {
bos.write(b, 0, bytesRead);
}
byte[] bytes = bos.toByteArray();
byte[] を base64 文字列に変換します。
String dataToSave = Base64.encodeToString(bytes, Base64.DEFAULT);
また
byte[] dataToSave = Base64.encode(bytes, Base64.DEFAULT);
ただし、base 64 エンコーディングをサポートするには、少なくともバージョン 2.2 が必要です。
最初の実装を選択した場合は、sqlite テーブルの TEXT フィールドで十分です。それ以外の場合は、テーブルに列を BLOB として作成します。そして、ContentValues
挿入したい を作成するときに、 を追加しvalues.put(KEY, dataToSave);
ます。
データの取得:
逆の操作を行います: 1) sqlite からデータを取得し、2) byte[] に変換し、3) ファイルに変換します。
byte[]
への変換File
:
FileOutputStream out = new FileOutputStream(path); //file path as string
out.write(data); //data is the byte[]
out.flush();
out.close();
テキスト ファイルにデータ行が含まれている場合。例えば
<ISBN>, <Title>, <Author>, <Price>
次に、これをテーブルとして sqlite に保存する必要があります。なんで?いずれにせよ、SQLite は実際にはファイル データベースであるため、SQLite にテーブルとして格納すると、SQLite の機能を使用してさまざまな方法でデータをクエリできます。行の削除などを追加します。
こちらの手順に従って、行き詰まった場所をお知らせください。 http://www.vogella.com/articles/AndroidSQLite/article.html
テキストの値を保存する簡単な方法が必要な場合は、それを文字列に読み込んで、SharePreferences を使用して文字列を保存する必要があります。
いずれにせよ、ステップ 1 は SD カードからファイルを読み取ることです。