android写入文件
1、首先打开设置应用程序。
2、然后在设置列表中,找到并点击“应用和通知”选项。
3、然后在应用和通知页面中,点击“应用权限”选项。
4、然后在应用权限页面中,找到并点击“文件和媒体”选项。
5、然后在文件和媒体页面中,找到需要解除访问限制的android文件夹,并点击它。
6、最后在文件夹权限页面中,将“读取”和“写入”权限都设置为“允许”。
2. android 判断sdcard是否存在,以及写入权限
做android 开发的时候经常涉及到权限的问题,而我们像sdcard中写入文件的时候就要判断是否有权限,以及sdcard是否存在,判断sdcard是否存在的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
</uses-permission
写入文件到sdcard中:
File f = new File(path);
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))//sd存在并可写{OutputStreamWriter osw = new OutputStreamWriter(
osw.write(你要输入的值);}
3. Android开发之如何读写文件
【转】
首先介绍如何存储数据,显然,要将数据从应用中输出到文件中,必须得到一个输出流outPutStream,然后往输出流中写入数据,在这里Android自带了一个得到应用输出流的方法
FileOutputStream fos =context.openFileOutput(“yuchao.txt”,Context.MODE_PRIVATE); (1)
其中第一个属性为文件名,第二个属性为读写模式(有关读写模式的说明下面将详细阐述),
然后在文件输出流fos中便可以写入数据
Fos.write(“Hi,”I’m Chao Yu!”.getBytes());
用完文件输出流之后记得关闭
fos.close();
这样,在/data/data/packageName/file目录下就生成了一个文件名为yuchao.txt的文件,文件中的内容为” Hi,I’m Chao Yu!”
有关(1)中读写模式其实就是制定创建文件的权限以及在读写的时候的方式,Android中提供了以下几种读写模式
Context.MODE_PRIVATE = 0
该模式下创建的文件其他应用无权访问,并且本应用将覆盖原有的内容
Context.MODE_APPEND = 32768
该模式下创建的文件其他应用无权访问,并且本应用将在原有的内容后面追加内容
Context.MODE_WORLD_READABLE = 1
该模式下创建的文件其他应用有读的权限
Context.MODE_WORLD_WRITEABLE = 2
该模式下创建的文件其他应用有写的权限
如果需要将文件设置为外部应用可以读写,可将读写模式设置为Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE
一般情况下,各个应用维护的数据都在一个特定的文件夹中,即上面所提到的/data/data/packageName/file(存在于手机存储中),但手机内存毕竟有限,所以有些情况下,我们需要往SD卡中写入数据文件,这其实和普通的java web 应用步骤一样,都是先创建特针对特定目录特定文件的输出流,然后往输出流中写数据,这里要注意一个方法,就是获取SD卡根目录的方法,随着Android系统不断升级,SD卡的根目录随时都有可能改变,Android中得到SD卡根目录的方法是
File sdCardDir = Environment.getExternalStorageDirectory();
然后就可以进行下面的步骤
File saveFile = new File(sdCardDir, “yuchao.txt”);
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write("Hi,I’m ChaoYu".getBytes());
outStream.close();
值得注意的是,在往SD卡中写数据的时候,健壮的代码必须考虑SD卡不存在或者写保护的情况,故在写入之前,先做判断
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
……
}
接着,我们来学习下我们的应用程序如何读取文件中的数据,其实就是写的逆向过程
若要读取应用程序默认维护的文件(即/data/data/packageName/file目录下的文件),首先得到文件输入流
FileInputStream istream = this.context.openFileInput(“yuchao.txt”);
然后在内存中开辟一段缓冲区
byte[] buffer = new byte[1024];
然后创建一个字节数组输出流
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
读出来的数据首先放入缓冲区,满了之后再写到字符输出流中
while((len=istream.read(buffer))!=-1){
ostream.write(buffer, 0, len);
}
最后关闭输入流和输出流
istream.close();
ostream.close();
将得到的内容以字符串的形式返回便得到了文件中的内容了,这里的流操作较多,故以一张图片来说明,见图1
return new String(ostream.toByteArray());
从SD卡中读取数据与上述两个步骤类似,故不再赘述,留给读者自己思考
如在开发过程中进行SD卡地读写,切忌忘了加入权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
至此,Android系统中有关文件数据的读写介绍完毕。
4. 关于android创建文件夹的一个问题
Android4.4开始,如果设备有内部机身存储,那么SD就成为二级外部存储,导致不能写入文件,因为默认只能写入以及存储。在Android开发者网站的“外部存储技术信息”文档中的描述:"WRITE_EXTERNAL_STORAGE只为设备上的主要外部存储授予写权限,应用程序无法将数据写入二级外部存储设备,除非指定了应用程序允许访问的特定的目录。“ Google表示,这样做的目的是,通过这种方式进行限制,系统可以在应用程序被卸载后清除遗留文件。
这目前只影响双存储设备,果你同时使用了机身存储和SD卡,那么应用程序将无法在SD卡中创建、修改、删除数据。
会写入到如下位置:
解决办法:1.对Android手机用户来讲,获得系统的ROOT权限是一个解决方法。2.对Android开发者来讲,可在应用中嵌入一段代码,其它方式写入失败,则将数据写入二级存储设备(这段代码作用是在Android 4.4+设备上):
1:
最后记得增加权限
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
5. Android中有几种数据存储方式,每种方式有哪些特点
Android中有5种数据存储方式,分别为文件存储、SQLite数据库、SharedPreferences、ContentProvider、网络。每种存储方式的特点如下:
1)文件存储
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供openFileInput()和openFileOutput()方法来读取设备上的文件。
2)SQLite数春圆据库
SQLite是Android所集成的一个轻量级的嵌入式数据库,它不仅可以使用Andorid API操作,同时它也支持SQL语句进行增删改查等操作。
3)SharedPreferences
SharedPreferences是Android提供的用于存储一些简单配置信息慧昌的一种机制,采扒碧塌用了XML格式将数据存储到设备中。不仅可以在同一个包下使用,还可以访问其他应用程序的数据,但是由于SharedPreferences的局限性,在实际操作中很少用来读取其他应用程序的数据。
4)ContentProvider
ContentProvider主要用于不同应用程序之间共享数据,ContentProvider更好的提供了数据共享接口的统一性,使不同应用共享数据更规范和安全。
5)网络存储数据
通过网络上提供的存储空间来上传(存储)或下载(获取)我们存储在网络空间中的数据信息