数据存储到文件中

一.基本

Context 类中提供了一个openFileOutput ()方法,可以用于将数据存储到指定的文件中。这个方法接收两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,注意这里指定的文件名不可以包含路径, 因为所有的文件都是默认存储到/data/data/<package name>/files/目录下的。第二个参数是文件的操作模式,主要有两种模式可选,MODE_PRIVATE 和MODE_APPEND。其中MODE_PRIVATE 是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖原文件中的内容,而MODE_APPEND 则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。

 

其实文件的操作模式本来还有另外两种, MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,这两种模式表示允许其他的应用程序对我们程序中的文件进行读写操作,不过由于这两种模式过于危险,很容易引起应用的安全性漏洞,现已在Android 4.2 版本中被废弃。

 

openFileOutput ()方法返回的是一个FileOutputStream 对象,得到了这个对象之后就可以使用Java 流的方式将数据写入到文件中了。

 

,Context 类中还提供了一个openFileInput()方法,用于从文件中读取数据。这个方法要比openFileOutput()简单一些,它只接收一个参数,即要读取的文件名,然后系统会自动到/data/data/<package name>/files/目录下去加载这个文件,并返回一个FileInputStream 对象,得到了这个对象之后再通过Java 流的方式就可以将数据读取出来了。

 

二.代码示例

 

public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        save();

 

        String load_info = getInfo();

        if(!TextUtils.isEmpty(load_info)){

            Toast.makeText(this, load_info, Toast.LENGTH_LONG).show();

        }

    }

 

    // 取出文件

    private String getInfo(){

        FileInputStream input = null;

        BufferedReader reader = null;

        StringBuilder content = new StringBuilder();

 

        try{

            input = openFileInput("data");

            reader = new BufferedReader(new InputStreamReader(input));

            String line = "";

            while( (line = reader.readLine()) != null ){

                content.append(line);

            }

        }catch (Exception e){

            e.printStackTrace();

        }finally {

            if (reader != null){

                try {

                    reader.close();

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        }

        return content.toString();

    }

 

    // 保存文件

    private void save(){

        FileOutputStream out = null;

        BufferedWriter writer = null;

 

        try{

            out = openFileOutput("data", Context.MODE_PRIVATE);

            writer = new BufferedWriter(new OutputStreamWriter(out));

            writer.write("你好啊");

        }catch (Exception e){

            e.printStackTrace();

        }finally {

            if (writer != null) {

                try {

                    writer.close();

                }catch(Exception e){

                    e.printStackTrace();

                }

            }

        }

 

    }

}

转载于:https://www.cnblogs.com/itfenqing/p/6738749.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值