Android 文件保存到手机根目录(不需要自己写路径,四种文件操作模式)

数据存储与访问

 
很多时候我们开发的软件需要对处理后的数据进行存储,以供再次访问,Android为数据存储提供了如下几种方式:
 
·文件
·SharedPreferences(参数)
·SQLite 数据库
·内容提供者(Content provider)
·网络
 
下面演示文件的存储与读取:

 

注意:

<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 细节:文件的四种操作模式
activity_main.xml
[ html]  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:orientation="vertical" >  
  
    <TextView  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:text="@string/text1" />  
  
    <EditText  
        android:id="@+id/filename"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:text="abc.txt" />  
  
    <TextView  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:text="文件内容" />  
  
    <EditText  
        android:id="@+id/filecontent"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:minLines="3" />  
  
    <Button  
        android:id="@+id/myButtonSave"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="保存" />  
  
    <Button  
        android:id="@+id/myButtonRead"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="读取" />  
  
</LinearLayout>  
 
 
FileServise.java
 
[java]  
package com.example.service;  
  
import java.io.ByteArrayOutputStream;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.io.OutputStreamWriter;  
  
import android.content.Context;  
  
public class FileServise {  
    /** 
     * 保存文件 
     *  
     * @param filename 
     *            文件名称 
     * @param filecontent 
     *            文件内容 
     * @return 
     */  
  
    private Context context;  
  
    public FileServise(Context context) {  
        super();  
        this.context = context;  
    }  
  
    public void savefile(String filename, String filecontent)  
            throws IOException {  
  
        /* 
         *使用安卓的Context 对象可以快速得到输出流 第二个参数是 
         * 私有操作模式,创建出来的文件只能被本应用访问。 同时,采用私有模式创建的文件, 会覆盖源文件的内容。 
         * Context.MODE_APPEND  追加的方式写入
   *context.Mode_WORLD_READABLE 可以被别的应用程序读取
   *context.Mode_WORLD_WRITEABLE 可以被别的应用程序写入 同时读写可以用 + 链接两个模式
   */  
  
        FileOutputStream fos = context.openFileOutput(filename,        //不用指定路径,直接写入SD卡根目录中
                Context.MODE_PRIVATE);  

  OutputStreamWriter ows = new OutputStreamWriter(outStream);  //使用字节转字符流
  BufferedWriter bd = new BufferedWriter(ows);            //使用字符缓冲流
  bd.write(content.getBytes().toString());               //写入SD卡的文件中

        fos.close();                              //关闭i/o
  
    }  
  
    /** 
     * 文件读取 
     *  
     * @param filename 
     * @return 
     * @throws IOException 
     */  
    public String readfile(String filename) throws IOException {  
  
        FileInputStream fis = context.openFileInput(filename);  
        // 写入内存中的方法  
        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
        byte[] buffer = new byte[1024];  
        int len = 0;  
        while ((len = fis.read(buffer)) != -1) {  
            baos.write(buffer, 0, len);  
        }  
        // 获取  
        byte[] data = baos.toByteArray();  
        return new String(data);  
    }  
  
}  

转载于:https://www.cnblogs.com/denghaicheng/p/4393666.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值