Android开发中SD卡文件读写

编程知识 更新时间:2023-04-17 20:08:09

上次写了一下Android开发后台service的一些基本探索。今天来说一下数据的存储,由于手机自带的存储空间有限,所以选择用手机的SD卡来存储数据文件,想要将本地的文件导入SD卡或者将SD上的文件导出到本地硬盘,可以用Android SDK 提供的工具,从sdcard中去读文件,首先要把文件通过\android-sdk-windows\tools\adb.exe把本地计算机上的文件copysdcard上去,命令是:adb.exe push e:/Y.txt/sdcard/。要把仿真器上的文件copy到本地计算机上用命令: adb.exe pull ./sdcard/FileSDTest.txt d:/

       Service产生的数据文件用二进制(字节流)进行读写,这样做的好处是当文件读入内存后,既可以快速定位到目标数据在内存中的位置,也减少了文件数据占用的内存空间。文件中数据结构的设计思路是一段数据中有用户和时间信息、Service采集到的GPS信息以及用户添加的多媒体信息。其中有这样几个字段:数据段总长度(按字节)、用户信息长度(按字节)、用户和日期数据(用户信息)、GPS经纬度数据、多媒体数据长度(按字节)、多媒体文件格式以及多媒体文件数据。可以用下面这个结构来描述:

 

$总长度(4Byte)$|用户信息长度(4byte)|用户信息(xByte)$|GPS数据(8Byte+8Byte+8Byte)$|多媒体数据长度(4Byte)|类型(4Byte)|数据(Sizeof(多媒体)Byte)|多媒体....

$总长度(4Byte)$|用户信息长度(4byte)|用户信息(xByte)$|GPS数据(8Byte+8Byte+8Byte)$|多媒体数据长度(4Byte)|类型(4Byte)|数据(Sizeof(多媒体)Byte)|多媒体....

$总长度(4Byte)$|用户信息长度(4byte)|用户信息(xByte)$|GPS数据(8Byte+8Byte+8Byte)$|多媒体数据长度(4Byte)|类型(4Byte)|数据(Sizeof(多媒体)Byte)|多媒体....

 

用这种格式按字节流写入文件后,当其他程序将文件按字节流读取到内存中的 buffer[] 后,就可以找到每一种数据精确的记录位置。举个例子,找第一段记录中的数据时,先将 buffer[4..7] 中的二进制数据转为 userlength(int) ,就可以知道用户信息的长度了,这样 buffer[8..(8+userlength)] 中记录的就是用户名和日期,接着 buffer[(8+userlength)..(32+userlength)] 24 个字节记录了记录产生时终端采集到的 GPS 信息的经度 (lon) 、纬度 (lat) 和高度 (alt) ,三条数据 (double) 中每条数据占 8 个字节。在 buffer[(32+userlength)..(36+userlength)] 中记录了第一条多媒体信息的长度 medialength(int) buffer[(36+userlength)..(40+userlength)] 中是这个多媒体文件的格式信息, buffer[(40+userlength)...(40+userlength+medialength)] 中记录的是多媒体文件数据,依次类推可以找出后面的多媒体数据。如果要找第二段记录信息,首先读取 buffer[0..3] ,转成 int sumlength 型后定位到 buffer[sumlength] ,这就是第二段信息的起始位置,再依次进行上述操作就可以取到全部数据。

更多推荐

Android开发中SD卡文件读写

本文发布于:2023-04-14 03:35:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/572c84bd568d15be54c46bbfbfc234d4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   Android   SD

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 74579文章数
  • 14阅读数
  • 0评论数