android 写文件权限

首先,在manifest.xml中添加user permission:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

代码中,
             String path = "http://192.168.1.22:8088/4";
            URL url = new URL(path);
            URLConnection cn = url.openConnection();
            cn.connect();
            InputStream stream = cn.getInputStream();
            if (stream == null)
                throw new RuntimeException("stream is null");
            File temp = new File("/data/data/com.dilifetech/mediaplayertmp");//com.dilifetech是package name
            temp.createNewFile();
            String tempPath = temp.getAbsolutePath();
            FileOutputStream out = new FileOutputStream(temp);
            byte buf[] = new byte[128]; 
            do {
                int numread = stream.read(buf);
                if (numread <= 0)
                    break;
                out.write(buf, 0, numread);
                } while (true);
            mp.setDataSource(tempPath);
            stream.close();

android系统中的文件权限:
Android有一套自己的安全模型, 具体可参见Android开发文档。当应用程序(.apk)在安装时就会分配一个userid,当该应用要去访问其他资源比如文件的时候,就需要 userid匹配。默认情况下 ,任何应用创建的文件,数据库, sharedpreferences都应该是私有的(位于/data/data/your_project/files/),其余程序无法访问。除非在创 建时指明是MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE,只要这样其余程序才能正确访问。

因为有这种Android读写文件的方法在安全上有所保障,进程打开文件时Android要求检查进程的user id。所以不能直接用java的api来打开,因为java的io函数没有提这个机制 。无法用java的api直接打开程序私有的数据 ,默认路径为/data/data/your_project/files/

  1. FileReader file = new FileReader("Android.txt");

这里特别强调私有数据!言外之意是如果某个文件或者数据不是程序私有的,既访问它时无须经过Android的权限检查,那么还是可以用java的io api来直接访问的。所谓的非私有数据是只放在sdcard上的文件或者数据,可以用java的io api来直接打开sdcard上文件。

  1. FileReader file = new FileReader("/sdcard/Android.txt");

如果要打开程序自己私有的文件和数据,那必须使用Activity提供openFileOutput和openFileInput方法。

创建程序私有的文件,由于权限方面的要求,必须使用activity提供的Android读写文件方法

  1. FileOutputStream os = this.openFileOutput("Android.txt", MODE_PRIVATE);
  2. OutputStreamWriter outWriter = new OutputStreamWriter (os);

读取程序私有的文件,由于权限方面的要求,必须使用activity提供的方法

    1. FileInputStream os =this.openFileInput("Android.txt");
    2. InputStreamReader inReader = new InputStreamReader(os);

http://wingjang.blog.163.com/blog/static/4791344220110142319369/

 1     void writeToXml(String returnid) {
 2
 3         file = new File(getActivity().getFilesDir().getPath() + File.separator
 4                 + FILENAME);
 5
 6         if (file.exists()) {-------------->一直是false或true
 7
 8             DocumentBuilderFactory dbf = null;
 9             DocumentBuilder db = null;
10             Document doc = null;
11             try {
12                 dbf = DocumentBuilderFactory.newInstance();
13                 // 通过实例构建DocumentBuilder
14                 db = dbf.newDocumentBuilder();
15                 // 创建Document 解析给定的文件
16                 doc = db.parse(file);
17                 Element root = doc.getDocumentElement();
18
19                 root.getElementsByTagName("invitations").getLength();
20                 Element root2 = doc.createElement("invitation_" + returnid);
21                 root.appendChild(root2);
22
23                 TransformerFactory tfs = TransformerFactory.newInstance();
24                 Transformer tf = tfs.newTransformer();
25                 tf.transform(new DOMSource(doc), new StreamResult(
26                         new FileOutputStream(file)));
27             } catch (Exception e) {
28                 e.printStackTrace();
29             } finally {
30                 doc = null;
31                 db = null;
32                 dbf = null;
33             }
34         } else {
35
36             try {
37                 XmlSerializer serializer = Xml.newSerializer();
38                 StringWriter writer = new StringWriter();
39                 serializer.setOutput(writer);
40                 serializer.startDocument("utf-8", true);
41                 serializer.startTag("", "invitations");
42
43                 serializer.startTag("", "invitation_" + returnid);
44                 serializer.text("");
45                 serializer.endTag("", "invitation_" + returnid);
46
47                 serializer.endTag("", "invitations");
48                 serializer.endDocument();
49                 OutputStream out = getActivity().openFileOutput(FILENAME,
50                         Context.MODE_PRIVATE);----------------->file.exists()仍然是true或false
51                 getActivity().getFileStreamPath(FILENAME).exists();
52
53                 OutputStreamWriter outWriter = new OutputStreamWriter(out);
54                 outWriter.write(writer.toString());
55                 writer.close();
56                 outWriter.close();
57                 out.close();
58             } catch (FileNotFoundException e) {
59
60                 e.printStackTrace();
61             } catch (IOException e) {
62
63                 e.printStackTrace();
64             }
65         }
66     }

android 写文件权限

时间: 2024-08-04 21:14:03

android 写文件权限的相关文章

修改android手机文件权限

修改android手机文件权限 默认情况下,一个应用肯定是读取不了另外一个应用的数据的,因为权限不够.但是我们一定要读,怎么办? 修改我们要读取文件的权限. Android是基于Linux的,所以修改权限的方法和Linux大致一样. 只不过手机被生产出来之后,生产商限制了手机的权限,给我们用的是普通用户,比如这样我们就不能删除手机的原生应用.修改手机文件的权限等等操作. 不过我们可以将手机ROOT一下,获取手机的最高权限. 拿到最高权限之后,我们以超级用户的方式进入手机终端. 进入终端之后我们就

android 驱动文件权限设置

如果发现android的设备文件,也就是/dev/目录下的文件没有相关权限,可以修改以下文件: /system/core/rootdir/ueventd.rc 该文件的内容如下所示: /dev/null 0666 root root/dev/zero 0666 root root/dev/full 0666 root root/dev/ptmx 0666 root root/dev/tty 0666 root root ---- 各个字段说明如下: 驱动文件路径  驱动文件权限  驱动文件所属用

android下文件访问权限

文件权限:   - --- --- --- 一共有10个 表示符 第一个 - :d-->表示文件夹   l-->表示 快捷方式  -  表示 的为文件 第(2-4):表示当前用户权限    rw-  可读可写     rwx   可读可写可执行 第(5-7):表示当前用户组所在权限 第(8-10): 表示 除当前组之外的其他权限 如上图所示 : 私有文件权限 : - rw- rw- --- 对应的二进制    110 110 000     十进制 660 可读文件权限 : - rw- rw-

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

Android清单文件具体解释(二) ---- 应用程序权限声明

我们知道,Android系统的各个模块提供了很强大的功能(比方电话,电源和设置等),通过使用这些功能.应用程序能够表现的更强大.更灵活.只是,使用这些功能并非无条件的.而是须要拥有一些权限.接下来,我们就開始解说还有一个很重要的知识点--应用程序权限声明.当中主要包含应用程序的权限声明,自己定义应用程序的訪问权限和SDK版本号限定. 1.<uses-permission>--应用程序的权限申请 权限 描写叙述 android.permission.ACCESS_NETWORK_STATE 同意

Android清单文件详解(二) ---- 应用程序权限声明

我们知道,Android系统的各个模块提供了非常强大的功能(比如电话,电源和设置等),通过使用这些功能,应用程序可以表现的更强大,更灵活.不过,使用这些功能并不是无条件的,而是需要拥有一些权限.接下来,我们就开始讲解另一个非常重要的知识点--应用程序权限声明,其中主要包括应用程序的权限声明,自定义应用程序的访问权限和SDK版本限定. 1.<uses-permission>--应用程序的权限申请 权限 描述 android.permission.ACCESS_NETWORK_STATE 允许应用

Android中的文件权限操作

默认本工程创建的文件本工程对其有读写权限. 我们可以通过context.openFileOutput("文件名", 模式): 我们可以创建私有, 共有, 只读, 只写文件, 默认的文私有文件. 如果别的Android工程访问本工程的文件的话就会受限制, android的内核是linux, 所以他的文件管理和linux中的文件时一样的. 创建文件代码: /** * 创建各种文件 * @throws IOException * */ @SuppressLint({ "WorldW

CentOS下yii异常提示某个文件夹没有写的权限

CentOS下yii异常提示某个文件夹没有写的权限,明明给了最高的777权限,却一直提示没有写的权限.弄了好久,才明白是selinux作怪. 解决方法1:懒人方法,关闭selinux.比如 setenforce 0  等等... 生产环境中,基于安全性的考虑,不建议关闭selinux 解决方法2:彻底解决:chcon -R -t httpd_sys_content_t /your yii app dir.

android 写行为日志到SD卡 并发处理 异步写入数据到文件不影响界面响应时间

公司在做一个项目 要求记录用户行为,写行为日志文件到SD卡.实现思想 不影响界面用户体验,要时时记录日志 不能漏掉. 1.并发处理日志 写一个类负责管理各个线程传过来的日志数据,日志数据放在队列中等待写线程去处理.这里每次添加一条日志数据都会检查写日志线程是否在工作,同时为了并发处理传过来的数据采用synchronized 同步: ConcurrentLinkedQueue 是基于链接节点的.线程安全的队列.并发访问不需要同步.因为它在队列的尾部添加元素并从头部删除它们,所以只要不需要知道队列的