1

我是否应该将保存在手机sd卡中的txt文件放在Android的数据库SQLite中,但我不知道该怎么做,请帮助我,我写了几行代码来做到这一点?

4

2 回答 2

1

转换Filebyte[],然后将其作为BLOB数据添加到 sqlite 中。也许你应该将它们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);

尽管您必须至少有 2.2 版才能支持 base 64 编码。

如果您选择了第一个实现,那么您的 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();
于 2012-07-23T22:40:31.790 回答
0

如果文本文件包含数据行。例如

 <ISBN>, <Title>, <Author>, <Price>

然后你应该把它作为表存储在 sqLite 中。为什么?因为 SQLite 无论如何都是一个文件数据库,一旦你在 SQLite 中存储为一个表,你就可以使用 SQLite 的强大功能以各种方式查询数据。添加删除行等。

按照此处的步骤,告诉我们您遇到的问题。 http://www.vogella.com/articles/AndroidSQLite/article.html

如果您只是想要一种简单的方法来保存文本的值,您应该将其读入字符串并使用 SharePreferences 保存字符串。

无论如何,第一步是从 SD 卡中读取文件。

于 2012-07-23T22:40:23.017 回答