Android学习笔记(41):File存储

Java为我们提供了一套完备的IO流系统,方便我们访问和存储文件,这种方式在Android上依旧可以使用。关于Java的IO流系统,这里就不多做介绍了。

Android系统不仅支持标准Java的IO类和仿法,还提供了能够简化读写流式文件过程的函数,主要来介绍下面这两个函数:

openFileOutput()

openFileInput()

(1)public FileOutputStream openFileOutput (String name, int mode)创建和写入文件

打开应用程序的数据文件夹下对应name文件的输出流。利用Java的方式写入文件。

如果指定的文件存在,直接打开文件准备写入数据。

如果指定的文件不存在,则创建一个仅能够被自己访问的私有文件。文件默认保存在Android系统的/data/data/<package name>/file目录中。

mode参数指定打开文件的模式,有如下的值可选:

MODE_PRIVATE :私有模式,文件仅能够被创建文件的程序访问。

MODE_APPEND :追加模式,如文件已存在,则在文件的结尾处添加新数据。

MODE_WORLD_READABLE :全局读模式,允许任何程序读取私有文件。

MODE_WORLD_WRITEABLE :全局写模式,允许任何程序写?私有文件。

write() :将数据写入文件。

flush() :将缓冲中的数据写入文件。

close() :关闭FileOutputStream。

(2)public FileInputStream openFileInput (String name) 读取文件

打开应用程序的数据文件夹下对应name文件的输入流。读取文件的方式与Java读取文件的方式相同。

(3)除了这主要的两个元素,context还提供了如下的方法供我们访问文件:

getDir(String name, int mode):获取或创建name对应的子目录。

File getFilesDir():获取数据文件夹的绝对路径。

String[] fileList():返回数据文件夹下的全部文件。

deleteFile(String name):删除指定文件。

(4)读取SD卡上的文件

为了读取SD卡上的文件,我们需要在AndroidManifest.xml中添加读写SD卡的权限:

<!--在SD卡中创建和删除文件的权限-->

<user-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS”/>

<!--向SD卡写入数据的权限-->

<user-permission android:name=”android.permission.WRITE_EXTERANL_STORAGE”/>

读取SD卡上文件的步骤如下:

1.调用Environment的getExternalStorageState()方法判断手机是否有SD卡,应用程序是否具有读写SD卡的权限,如Environment.getExternalStorageState(Environment.MEDIA_MOUNTED)。

2.调用Environment的getExternalStorageDirectory()方法来获取SD卡的目录。

3.使用FileInputStream、FileOutputStream、FileReader获FileWriter读写SD卡上的文件。

时间: 2024-10-10 23:09:01

Android学习笔记(41):File存储的相关文章

android学习笔记46——File存储

File存储——IO操作文件 openFileOutput.openFileInput Context提供了如下两个方法来打开本应用程序的数据文件夹里面的文件IO流. 1.FileInputStream openFileInput(String name):打开应用程序中的数据文件夹下的name文件对应输入流 2.FileOutputStream openFileOutput(String name,int mode):打开应用程序的数据文件下的name文件对应的输出流 注意: FileOutp

Android 学习笔记之数据存储SharePreferenced+File

学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取...   一个应用程序,经常需要与用户之间形成交互...需要保存用户的设置和用户的数据信息...这些都离不开数据的存储...Android的数据采用五种方式来进行存储...在这里就先介绍两种存储方式... 1.使用SharedPreferences存储数据...   对于软件配置参数的保存,Windows系统采用ini文件来进行保存,

Android学习笔记----Error:Execution failed for task &#39;:app:validateDebugSigning&#39;. &gt; Keystore file F:\myAndroid3\android_s

导入下载的工程出现这个错误,追究其原因是是下载的工程中有指定使用的Keystore文件的路径, 所以我们可以通过Android studio File->ProjectStructure->选择app ,再选择signing 把Store File里指定的Keystore文件的路径删除,或者填写自己的Keystore文件的路径 然后点击ok,再clean下工程即可 Android学习笔记----Error:Execution failed for task ':app:validateDebu

android学习笔记——利用BaseAdapter生成40个列表项

RT: main.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"               android:orientation="vertical"        

Android学习笔记(四三):文件访问

之前我们学习了通过preference和SQLite数据库进行数据存储,也可以通过文件方式.文件可以是在应用打包时预置,也可以是应用所生成. 文件访问有两种方式:一:静态数据的文件可以防止在res/raw中,这些文件是只读的,只有在应用版本升级的时候进行修改,或者我们先读出这些数据,通过 reference的方式来处理,这样以后可以进行修订,但是这种方式,会有两份数据保存.二:另一种方式是通过URL访问文件,动态数据的读取也可以采用SQLite3的方式. res/raw/下静态文件的读取 在re

udacity android学习笔记: lesson 3

udacity android学习笔记: lesson 3 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 联系:1307316一九六八 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. tips:https://code.csdn.net/titer1/pat_aha/blob/master/Markdown/an

Android学习笔记进阶18之画图并保存图片到本地

1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如"/sdcard/song/"如果不存在的话,要先创建(file.mkdirs).. 4.需要添加权限:<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Canvas是一个画布,你可以建

Android学习笔记进阶18 之画图并保存图片到本地

1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如"/sdcard/song/"如果不存在的话,要先创建(file.mkdirs).. 4.需要添加权限:<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Canvas是一个画布,你可以建

Pro Android学习笔记(十二):了解Intent(下)

解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键就是component 名字,在<intent-fliter>中声明的其他属性被忽略.对于implicit intent,则根据action,category和data来进行匹配.然而一个intent fliter中可以声明多个actions,多个categories,多个data属性,因此可以满