Android学习笔记--文件的读写
来源:互联网 发布:java如何获取访问者ip 编辑:程序博客网 时间:2024/05/02 02:01
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在应往文件中追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其它应用程序是否有权限读写该文件;
MODE_WORLD_READ_READABLE:表示当前文件可以被其它应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其它应用写入;
如果希望文件被其它应用读和写,可以传入
openFileOutput("file.txt",Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
步骤二:配置MainActivity.xml
步骤四:创建文件操作类
步骤五:在MainActivity.java中调用
Context.MODE_APPEND:模式会检查文件是否存在,存在应往文件中追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其它应用程序是否有权限读写该文件;
MODE_WORLD_READ_READABLE:表示当前文件可以被其它应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其它应用写入;
如果希望文件被其它应用读和写,可以传入
openFileOutput("file.txt",Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其它资源比如文件的时候,就需要userid匹配,任何应用创建的文件,sharedpreferences,数据库都应该是私有的,位于/data/data<package_name>/files,其它程序无法访问,除非在创建时指定了Context.MODE_READABLE或者Context.MODE_WORLD_WRITEABLE,其它程序才能正确访问。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<packagename>/cache目录
getFilesDir()方法用于获取/data/data/<packagename>/files目录
步骤一:配置strings.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">文件的保存与读取</string> <string name="fileNameLabel">文件名</string><string name="fileContentLabel">文件内容</string><string name="btntext">保存</string><string name="success">保存成功</string><string name="fail">保存失败</string>
<span style="white-space:pre"></span><string name="sdcarderr">SD卡不存在或者写保护</string></resources>
步骤二:配置MainActivity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/fileNameLabel" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/fileName" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/fileContentLabel" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:minLines="3" android:id="@+id/fileContent" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btntext" android:id="@+id/btnsave" /></LinearLayout>
步骤四:创建文件操作类
package com.example.files;import java.io.*;import android.content.Context;public class FileService {private Context context;public FileService(Context context){this.context=context;}/* * 保存文件 * @param fname:要保存成的文件名,不带路径 * @param content:要保存的文件内容 */public void save(String fname, String content) throws Exception {FileOutputStream ostream=context.openFileOutput(fname, context.MODE_APPEND);byte[] buffer=content.getBytes();ostream.write(buffer);ostream.close();}/* * 读取文件内容 * @param fname:要读取的文件名 */public String ReadFile(String fname) throws Exception{FileInputStream instream=context.openFileInput(fname);ByteArrayOutputStream farr=new ByteArrayOutputStream();byte[] buffer=new byte[1024];int len=0;while(true){len=instream.read(buffer);if (len>-1){farr.write(buffer,0,len);}elsebreak;}byte[] bdata=farr.toByteArray();return new String(bdata);}/* * 存储文件到存储卡上 */public void SaveFileOnSdCard(String fname,String Content) throws Exception{//这里用Environment.getExternalStorageDirectory()来获取sdcard的目录,以兼容早期的版本,早期版本sdcard位置为/sdcard,新的为/mnt/sdcardFile file=new File(Environment.getExternalStorageDirectory(),fname);//写在内存卡上不能用MODE,因为不支持FileOutputStream outstream=new FileOutputStream(file);outstream.write(Content.getBytes());outstream.close();}
}
步骤五:在MainActivity.java中调用
package com.example.filestreamreadandwrite;import com.example.files.FileService;import android.app.Activity;import android.os.Bundle;import android.view.*;import android.widget.*;public class MainActivity extends Activity {private EditText fileName;private EditText fileContent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)this.findViewById(R.id.btnsave);fileName=(EditText)this.findViewById(R.id.fileName);fileContent=(EditText)this.findViewById(R.id.fileContent);button.setOnClickListener(new BtnClickListen());}private final class BtnClickListen implements View.OnClickListener{@Overridepublic void onClick(View v) {String fname=fileName.getText().toString();String content=fileContent.getText().toString();FileService fs=new FileService(getApplicationContext());/*以下方式是存手机本身的存储器上的try {fs.save(fname,content);Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Toast.makeText(getApplicationContext(), R.string.success+e.getMessage(), Toast.LENGTH_LONG).show();}*///以下方式是存在内存卡中的try{//先判断是否存在sdcard,并且sdcard是否可读写if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){fs.SaveFileOnSdCard(fname, content);Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();}else{Toast.makeText(getApplicationContext(), R.string.sdcarderr, Toast.LENGTH_LONG).show();}}catch(Exception ex){}}}}
0 0
- Android学习笔记--文件的读写
- 文件读写学习笔记
- 文件读写学习笔记
- 学习笔记---文件读写
- iOS学习笔记:plist文件的读写
- Python3学习笔记7-文件的读写
- android 学习笔记2-logcat 内外部文件的存储 文件权限 xml读写
- Android学习笔记(11)————Android的私人文件夹的文件读写操作
- Android学习笔记(11)————Android的私人文件夹的文件读写操作 .
- Android学习笔记(九) Android文件读写操作
- Android学习笔记(八)之Android 读写xml文件
- android学习笔记9--------------SD卡读写文件
- (Android学习笔记)读写SD卡文件
- Android学习笔记 day02 _ 测试 & 文件读写操作
- Android基础学习笔记之-基本文件读写实现
- [perl学习笔记]文件操作之文件的读写
- Python学习笔记--文件读写
- Lua学习笔记-文件读写
- OC语法总结
- malloc源码
- Android之android:layout_gravity和android:gravity的区别
- Oracle树形汇总--connect_by_root
- iOS开发new与alloc/init的区别
- Android学习笔记--文件的读写
- XMPP中离线消息的发送
- 各种Layout用到的一些重要的属性
- VC中的隐式转换 一般是隐藏的错误
- malloc 源码
- gdb显示汇编调试
- os日期格式转换
- 谁说3D打印只能做模型?这项新技术搞定了量产
- 野指针理解和处理