我是否应该将保存在手机sd卡中的txt文件放在Android的数据库SQLite中,但我不知道该怎么做,请帮助我,我写了几行代码来做到这一点?
2 回答
转换File
为byte[]
,然后将其作为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();
如果文本文件包含数据行。例如
<ISBN>, <Title>, <Author>, <Price>
然后你应该把它作为表存储在 sqLite 中。为什么?因为 SQLite 无论如何都是一个文件数据库,一旦你在 SQLite 中存储为一个表,你就可以使用 SQLite 的强大功能以各种方式查询数据。添加删除行等。
按照此处的步骤,告诉我们您遇到的问题。 http://www.vogella.com/articles/AndroidSQLite/article.html
如果您只是想要一种简单的方法来保存文本的值,您应该将其读入字符串并使用 SharePreferences 保存字符串。
无论如何,第一步是从 SD 卡中读取文件。