【Android】“存储”之普通文件存储(内部存储空间)

Android是基于java语言的,在java中提供了一套完整的输入输出流操作,与文件相关的有FileInputStream和FileOutputStream等,通过这些类可以方便访问磁盘上的文件内容。通用Android也支持这种方式来访问手机上 的文件。我们直到Android手机中的文件可以存储在内部存储空间和外部SD卡(如果有的话),现在将记录内部存储空间这种情况下的文件存储。

两个方法

Android中文件的读取操作主要是同过Context类来完成的,该类提供了两个方法来打开本应用程序的数据文件夹里的文件IO流。

(1)openFileInput(String name):打开App数据文件夹(data)下name文件对应的输入流。

(2)openFileOutput(String name,int mode):打开应用程序的数据文件夹下的name文件对应输出流。name参数用于指定文件名称,不能包含路径分隔符“\”,如果文件不存在,Android会自动创建,mode参数用于指定操作模式,Context类中定义了四种操作模式常量分别是:

(1)Context.MODE_PRIVATE = 0:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。

(2)Context.MODE_APPEND = 32768:模式检查文件是否存在,存在就在文件中追加内容,否则创建新文件再写入内容。

(3)Context.MODE_WORLD_READABLE = 1:表示当前文件可以被其他应用读取。
(4):Context.MODE_WORLD_WRITEABLE = 2:表示当前文件可以被其他应用写入。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical">

    <EditText
        android:id="@+id/ET_write"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入想存入文件的内容"/>
    <Button
        android:id="@+id/BT_write"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="写入内容"/>
<!--android:editable="false"将文本框设置为不可编辑状态-->
    <EditText
        android:id="@+id/ET_read"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:hint="显示读取的内容"/>
    <Button
        android:id="@+id/BT_read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="读取内容"/>

</LinearLayout>

(不同为什么自己截的图会莫名其妙打上水印还有奇怪的qq_31718279是什么东西)
这里写图片描述

package com.file.file;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class MainActivity extends AppCompatActivity {

    private Button bt_write,bt_read;
    private EditText et_write,et_read;
//    设置保存的文件名称
    private String fileName = "content.txt";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bt_read = (Button)findViewById(R.id.BT_read);
        bt_write = (Button)findViewById(R.id.BT_write);
        et_read = (EditText)findViewById(R.id.ET_read);
        et_write = (EditText)findViewById(R.id.ET_write);

        bt_read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                将读取的内容显示在 EditText 控件上
                et_read.setText(read());
            }
        });

        bt_write.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                将 EditText 上的内容写入文本
                write(et_write.getText().toString());
            }
        });

    }

    private void write(String s) {
        try{
            FileOutputStream fos = openFileOutput(fileName, Context.MODE_APPEND);
            PrintStream ps = new PrintStream(fos);
            ps.print(s);
            ps.close();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private String read() {
        StringBuilder sbBuilder = new StringBuilder("");
        try{
            FileInputStream is = openFileInput(fileName);
//            定义缓冲区
            byte[] buffer = new byte[64];
//            记录每次读取的字节数
            int hasRead;
            while ((hasRead = is.read(buffer))!= -1){
                sbBuilder.append(new String(buffer,0,hasRead));
            }
        } catch (Exception e){
            e.printStackTrace();
        }
        return sbBuilder.toString();
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值