微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Android的多种数据存储方法

Android的多种数据存储方法

时间:10-10 来源:互联网 点击:

MODE_APPEND, MODE_WORLD_READABLE, 和MODE_WORLD_WRITEABLE。

从内部存储中读一个文件:

1、调用openFileInput(),并传递需要读取的文件的名称。这个方法返回一个FileInputStream。

2、使用read()从文件中读取数据。

3、使用close()关闭文件流。

提示:如果你想在编译时往你的应用中存入一个静态文件,就得把文件保存到项目的res/raw目录下。你可以调用openRawResource()并传递资源的ID(R.raw.)来打开它。这个方法返回一个InputStream,你可以使用它读取文件,但不能够写入这个原始文件。

保存缓存文件

如果你想要缓存一些数据,而不是保存它们,你应该调用getCacheDir()打开一个File对象,它表示你的应用应当保存临时缓存文件的内部目录。

其他有用的方法

getFilesDir() 取得内部文件在文件系统中保存位置的绝对路径。

getDir() 创建(或者打开已存在的)内部存储空间所在的目录。

deleteFile() 删除内部存储的一个文件。

fileList() 返回当前由你的应用保存的文件的列表。

使用外部存储 - Using the External Storage

所有兼容Android的设备都支持一个可共享的“外部存储(external storage)”,可用来保存文件。这可以使一个可移动的存储设备(比如SD卡)或者一个内部的(不可移动的)存储。保存在外部存储的文件是可读的。并且当用于传输数据的USB大容量存储选项启用时,用户能够在计算机上修改它们。

注意:* 如果用户挂载外部存储到计算机上,或者移除媒体,外部文件将会消失不见。并且对于这些保存在外部存储的文件,没有强制的安全措施。所有的应用都可以读/写这些文件。用户也能够删除它们。

检测媒体可用性

在你对外部存储做任何事情之前,你总是应当调用getExternalStorageState()以检测媒体是否可用。媒体可能被计算机挂载,可能丢失,可能只读,或者处于某些其他状态。比如,这是示例代码:

color:#008>falseboolean mExternalStorageWriteable ;color:#606>Environment();(.MEDIA_MOUNTED(state{ color:#660>color:#008>true} if Environment.equals)) // We can only read the media mExternalStorageAvailable ; mExternalStorageWriteable ;else // Something else is wrong. It may be one of many other states, but all we need color:#660>color:#008>false}

这个例子检测了外部存储是否可读或可写。getExternalStorageState()方法返回你想要检测的其他状态。比如,媒体是否被共享(已连接到一台计算机),是否完全丢失,是否被移除等等。当你的应用需要访问媒体时,你可以依据这些以更详细的信息通知用户。

访问位于外部存储的文件

如果你正在使用API Level 8或者更高版本,使用getExternalFilesDir()打开一个文件对象,它表示你的应用应当保存文件所在的外部存储目录。这个方法需要一个类型参数,指定你需要的子目录类型,比如DIRECTORY_MUSIC或者DIRECTORY_RINGTONES(传递null表示你的应用程序的目录所在的根目录)。如有必要,这个方法将会创建一个目录。通过指定目录的类型,你确信Android的媒体扫描器会将系统中的文件正确分类(例如,铃声将被归类为铃声而不是音乐)。如果用户卸载了你的应用,这个目录以及它的内容将会被删除。

如果你正在使用API Level 7或者更低版本,使用getExternalStorageDirectory()打开一个文件对象,它表示外部存储的根目录。接下来,你应当写入你的数据在一下目录:

/Android/data//files/

com.example.android.app。如果用户的设备正在运行API Level 8或者更高版本,且用户卸载了你的应用,这个目录和它的内容将会被删除。

保存应当共享的文件

在媒体扫描器下隐藏你的文件

在你的外部文件目录中放置包括一个空的文件,命名为.nomedia(注意文件名前缀的点)。这会阻止Android的媒体扫描器读取你的媒体文件,并并在类似Gallery或者Music这样的应用中包括它们。

如果你想要保存与你的应用没有关联的文件,并且这些文件不应在应用卸载时被删除,把他们保存在外部存储的一个公共目录上即可。这些目录位于外部存储的根目录下,比如Music/, Pictures/, Ringtones/,以及其它目录。

在API Level 8或者更高版本,调用getExternalStoragePublicDirectory(),传递你需要的公共目录的类型,比如DIRECTORY_MUSIC, DIRECTORY_PICTURES, DIRECTORY_RINGTONES或者其它。如有必要,这个方法会创建新目录。

如果你正在使用API Level 7或者更低版本,调用getExternalStorageDirectory()打开一个File,它表示外部存储的根目录。接着保存你的共享文件

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top