Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数据库SQLite(Android)中添加txt文件?_Android_File_Sqlite - Fatal编程技术网

如何在数据库SQLite(Android)中添加txt文件?

如何在数据库SQLite(Android)中添加txt文件?,android,file,sqlite,Android,File,Sqlite,我是否应该将储存在手机sd卡中的txt文件放在Android的数据库SQLite中,但我不知道如何做,请帮助我,并编写几行代码来完成此操作?如果文本文件包含数行数据。比如说 <ISBN>, <Title>, <Author>, <Price> 如果你只是想用一种简单的方法保存文本的值,你应该把它读入一个字符串,然后使用SharePreferences保存这个字符串 在任何情况下,步骤1都是从SD卡读取文件 如果文本文件包含数据行。比如说 &

我是否应该将储存在手机sd卡中的txt文件放在Android的数据库SQLite中,但我不知道如何做,请帮助我,并编写几行代码来完成此操作?

如果文本文件包含数行数据。比如说

 <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所做的是“统一”相同的字符以保留空间,更多内容可以在以下内容中找到: