[android] 保存文件到SD卡

[android] 保存文件到SD卡,第1张

概述/****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d

/****************2016年5月4日 更新*****************************/

知乎:为什么很多AndroID应用要把文件写到/sdcard目录下而不是写到/data/data/目录下?

AndroID本身提供了/data/data/com.companyname.appname/这个路径供广大app存放configuration以及user data之类的东西,为什么很多App要把配置文件甚至log写到/sdcard目录下面?刚试了一下,禁用掉QQ的”修改手机存储空间“权限,手机QQ连发图片都发不出去了。。。

---

想问一下,/data/data/com.companyname.appname/目录里的数据有什么限制么?比如空间大小限制?写到/sdcard里,又有什么优势么?

 

祈雨蓝:

没有限制 另外对应着 SD卡上也有一个文件夹 /AndroID/data/包名,这个文件夹也是用来给程序放应用数据的,此文件夹读写在4.4及以后不需要外置储存区读写权限。

这两个文件夹区别在于 data 分区有权限控制,除非应用自己同意,否则其他应用无法读取内部的数据,而sdcard/AndroID下的文件只要有外置空间读取权限就可以读取。所以data下一般放私密信息,而sdcard/AndroID 下放可以公开的缓存数据。

 

至于直接在sdcard下随便建文件夹的

 

就是开发人员素质低 或者 产品用耍流氓的方式筛选用户

 

处理方式:

卸载+一星

 

/*********************************************************************/

 

手机里面有两块空间,手机内部空间(/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卡根路径

 

 

业务类修改:

 

package com.tsh.savefile.service;import java.io.BufferedReader; java.io.file; java.io.fileinputStream; java.io.fileOutputStream; java.io.inputStreamReader; java.util.HashMap; java.util.Map; androID.content.Context; androID.os.Environment; androID.Widget.Toast;public class LoginService {    /**     * 保存用户名和方法的业务方法     * @param context 上下文     *  username 用户名     *  password 方法     * @return     */    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();            true;        } catch (Exception e) {            e.printstacktrace();            ;        }            }         * 读取     * static Map<String,String> getSavedUserInfo(Context context){        file file= {            fileinputStream fis= fileinputStream(file);            BufferedReader br=new BufferedReader( inputStreamReader(fis));            String[] res=br.readline().split("##");            Map<String,String> map=new HashMap<String,1)">();            map.put("username",res[0]);            map.put("password",res[1]);            return map;        } null;        }            }}

 

总结

以上是内存溢出为你收集整理的[android] 保存文件到SD卡全部内容,希望文章能够帮你解决[android] 保存文件到SD卡所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存