[android] 保存文件到SD卡
2016-02-29 22:32
429 查看
手机里面有两块空间,手机内部空间(/data/data/)和外部存储空间(/mnt/sdcard/ 或者直接/sdcard/)
与上面的代码基本一样,只是在new File(“/sdcard/文件名”),此时会报错,primission denied
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
在清单文件中添加权限 android.primission.WRITE_EXTERNAL_STORAGE
4.0以前的系统读sd卡不需要权限,有很大的安全隐患,4.0以后的有权限,在设置里面开发者选项,对sd卡进行读写保护。添加权限 android.primission.READ_EXTERNAL_STORAGE
判断sd卡是否存在调用Evevironment.getExternalStorageState(),得到结果与Environment.MEDIA_MOUNTED比较,sd卡挂载,Environment.getExternalStorageDirectory()可以得到sd卡根路径
业务类修改:
与上面的代码基本一样,只是在new File(“/sdcard/文件名”),此时会报错,primission denied
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
在清单文件中添加权限 android.primission.WRITE_EXTERNAL_STORAGE
4.0以前的系统读sd卡不需要权限,有很大的安全隐患,4.0以后的有权限,在设置里面开发者选项,对sd卡进行读写保护。添加权限 android.primission.READ_EXTERNAL_STORAGE
判断sd卡是否存在调用Evevironment.getExternalStorageState(),得到结果与Environment.MEDIA_MOUNTED比较,sd卡挂载,Environment.getExternalStorageDirectory()可以得到sd卡根路径
业务类修改:
package com.tsh.savefile.service; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import android.content.Context; import android.os.Environment; import android.widget.Toast; public class LoginService { /** * 保存用户名和方法的业务方法 * @param context 上下文 * @param username 用户名 * @param password 方法 * @return */ public static boolean saveUserInfo(Context context,String username,String password){ if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ Toast.makeText(context, "sd卡不可用", Toast.LENGTH_SHORT).show(); return false; } File file=new File(Environment.getExternalStorageDirectory(),"/info1.txt"); try { FileOutputStream fos=new FileOutputStream(file); String info=username+"##"+password; fos.write(info.getBytes()); fos.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 读取 * @return */ public static Map<String,String> getSavedUserInfo(Context context){ File file=new File(Environment.getExternalStorageDirectory(),"/info1.txt"); try { FileInputStream fis=new FileInputStream(file); BufferedReader br=new BufferedReader(new InputStreamReader(fis)); String[] res=br.readLine().split("##"); Map<String, String> map=new HashMap<String,String>(); map.put("username", res[0]); map.put("password", res[1]); return map; } catch (Exception e) { e.printStackTrace(); return null; } } }
相关文章推荐
- Android 自定义ViewGroup 实战篇 -> 实现FlowLayout
- android性能优化
- Android Studio的基本使用?
- Android开发之Activity的生命周期(一)
- Android init 启动过程分析
- 具有选择功能的对话框(下拉列表对话框)
- N个非常有用的Android程序片段(持续更新)
- 不小心将Android虚拟设备删除了几个属性,如何恢复...
- 【Android 开发教程】动态添加Fragments
- android欢迎界面渐入,渐出效果制作
- android 自定义TopBar的使用
- Android实现上下滑动隐藏/显示工具栏
- Android 集成facebook 第三方登陆
- Android 之 SystemService
- Android Studio ——Android Studio如何集成Genymotion
- android:Notification实现状态栏的通知
- Android之SurfaceView使用总结
- ANDROID 项目 Proguard对android.support.v4.包的配置
- Android工程师入门(一)——这周入大门,挤时间,轻喷
- android对启动模式的深入了解