如何在数据库SQLite(Android)中添加txt文件?
我是否应该将储存在手机sd卡中的txt文件放在Android的数据库SQLite中,但我不知道如何做,请帮助我,并编写几行代码来完成此操作?如果文本文件包含数行数据。比如说如何在数据库SQLite(Android)中添加txt文件?,android,file,sqlite,Android,File,Sqlite,我是否应该将储存在手机sd卡中的txt文件放在Android的数据库SQLite中,但我不知道如何做,请帮助我,并编写几行代码来完成此操作?如果文本文件包含数行数据。比如说 <ISBN>, <Title>, <Author>, <Price> 如果你只是想用一种简单的方法保存文本的值,你应该把它读入一个字符串,然后使用SharePreferences保存这个字符串 在任何情况下,步骤1都是从SD卡读取文件 如果文本文件包含数据行。比如说 &
<ISBN>, <Title>, <Author>, <Price>
如果你只是想用一种简单的方法保存文本的值,你应该把它读入一个字符串,然后使用SharePreferences保存这个字符串
在任何情况下,步骤1都是从SD卡读取文件 如果文本文件包含数据行。比如说
<ISBN>, <Title>, <Author>, <Price>
如果你只是想用一种简单的方法保存文本的值,你应该把它读入一个字符串,然后使用SharePreferences保存这个字符串
在任何情况下,步骤1都是从SD卡读取文件 将文件
转换为字节[]
,然后将其作为BLOB
数据添加到sqlite中。也许您应该将它们转换为Base64
格式以进行空间优化,这样您就可以了
正如您所看到的,在实现类似的东西时有多个步骤,所以我只是添加了概述。如果你被某件事困住了,询问更多细节
编辑:
我将提供关键点的代码
要将文件转换为字节[],请使用以下代码段:
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();
将字节[]转换为base64字符串:
String dataToSave = Base64.encodeToString(bytes, Base64.DEFAULT);
或
尽管您必须至少有2.2版才能支持Base64编码
如果选择了第一个实现,那么sqlite表中的任何文本字段都足够了,否则就在表中创建一列作为BLOB。创建要插入的ContentValues
时,添加values.put(KEY,dataToSave)代码>
获取数据:
执行相反的操作:1)从sqlite获取数据,2)转换为字节[],3)转换为文件
将字节[]
转换为文件
:
FileOutputStream out = new FileOutputStream(path); //file path as string
out.write(data); //data is the byte[]
out.flush();
out.close();
将文件
转换为字节[]
,然后将其作为BLOB
数据添加到sqlite中。也许您应该将它们转换为Base64
格式以进行空间优化,这样您就可以了
正如您所看到的,在实现类似的东西时有多个步骤,所以我只是添加了概述。如果你被某件事困住了,询问更多细节
编辑:
我将提供关键点的代码
要将文件转换为字节[],请使用以下代码段:
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();
将字节[]转换为base64字符串:
String dataToSave = Base64.encodeToString(bytes, Base64.DEFAULT);
或
尽管您必须至少有2.2版才能支持Base64编码
如果选择了第一个实现,那么sqlite表中的任何文本字段都足够了,否则就在表中创建一列作为BLOB。创建要插入的ContentValues
时,添加values.put(KEY,dataToSave)代码>
获取数据:
执行相反的操作:1)从sqlite获取数据,2)转换为字节[],3)转换为文件
将字节[]
转换为文件
:
FileOutputStream out = new FileOutputStream(path); //file path as string
out.write(data); //data is the byte[]
out.flush();
out.close();
你需要它的目的是什么?数据是否为表格格式?txt是一个包含表格数据的非有序文件(不以逗号等分隔)。如果有简单的方法从txt sd卡中删除此文件并将其插入表格的一行,我会理解!没有太多的并发症,如jpg图像!请按照本教程进行操作,并告诉我们您是否/何时陷入困境,是否编写了从SD卡读取文件的代码?。这是第一步。若你们需要打开阅读文件的建议,请告诉我们。我并不像表面上那个样贪心。你们需要它有什么用途?数据是否为表格格式?txt是一个包含表格数据的非有序文件(不以逗号等分隔)。如果有简单的方法从txt sd卡中删除此文件并将其插入表格的一行,我会理解!没有太多的并发症,如jpg图像!请按照本教程进行操作,并告诉我们您是否/何时陷入困境,是否编写了从SD卡读取文件的代码?。这是第一步。如果您需要关于打开阅读文件的建议,请告诉我们。我并不像看上去那么贪心。在我看来,您的方法很有趣,您能写几行代码说明如何操作吗?非常感谢。非常好,您能插入代码将文件字节转换为txt文件吗,反向操作?再次感谢!为什么使用基本编码?我用过这个,它看起来和不使用它没有什么不同…@AhmedZafar,正如我在回答中所说。您可以使用空间优化,但这不是必须的。Base64编码基本上更节省空间。它将字节[]转换为大小类似(更小)的字节[]或字符串。从技术上讲,Base64所做的是“统一”相同的字符以保留空间,更多内容可以从中找到:在我看来,您的方法很有趣,您能写几行代码来说明如何做到这一点吗?非常感谢。非常好,您能插入代码将文件字节转换为txt文件吗,反向操作?再次感谢!为什么使用基本编码?我用过这个,它看起来和不使用它没有什么不同…@AhmedZafar,正如我在回答中所说。您可以使用空间优化,但这不是必须的。Base64编码基本上更节省空间。它将字节[]转换为大小类似(更小)的字节[]或字符串。从技术上讲,Base64所做的是“统一”相同的字符以保留空间,更多内容可以在以下内容中找到: