1.保存文件到手机存储空间中
//ctrl+shift+y 选中字母转为大写 //ctrl+shift+x 选中字母转为小写 public void save(String filename, String content) throws Exception { //openFileOutput方法获取输出流,此方法获取的输出流是写入手机中 FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_APPEND); outStream.write(content.getBytes()); outStream.close(); }
2.保存文件到SD卡中
添加sd卡权限
在程序中访问SDCard,你需要申请访问SDCard的权限。 在AndroidManifest.xml中加入访问SDCard的权限如下: <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
判断SD卡是否可用
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ service.saveToSDCard(filename, content); Toast.makeText(getApplicationContext(), @"保存成功", 1).show(); }else{ Toast.makeText(getApplicationContext(), @"SD卡不可用或写保护中", 1).show(); }
//Environment.getExternalStorageDirectory()此方法获取SD卡的位置 public void saveToSDCard(String filename, String content)throws Exception { File file = new File(Environment.getExternalStorageDirectory(), filename); FileOutputStream outStream = new FileOutputStream(file); outStream.write(content.getBytes()); outStream.close(); }
3.读取文件内容
/** * 读取文件内容 * @param filename 文件名称 * @return 文件内容 * @throws Exception */ public String read(String filename) throws Exception { FileInputStream inStream = context.openFileInput(filename); ByteArrayOutputStream outStream = new ByteArrayOutputStream();//内容输出流暂时保存输入流读取到的字节数 byte[] buffer = new byte[1024]; int len = 0; while((len = inStream.read(buffer)) != -1){ outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray(); return new String(data); }4.写入文件的四种模式
Context.MODE_PRIVATE = 0 Context.MODE_APPEND = 32768 Context.MODE_WORLD_READABLE = 1 Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入:
openFileOutput("wxxu.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);