Android - Internal Storage

Android - Internal Storage 首页 / Android入门教程 / Android - Internal Storage

无涯教程能够从设备内部存储器中保存或读取数据。 FileInputStream和FileOutputStream类用于读取和写入文件。

在这里,无涯教程将读取和写入设备的内部存储数据。

读写内部存储示例

从面板上拖动2个edittexts,2个textviews和2个按钮,现在activity_main.xml文件将如下所示:

File: activity_main.xml
<relativelayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
    <edittext android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:layout_marginright="20dp" android:layout_margintop="24dp" android:ems="10">
        <requestfocus></requestfocus>
    </edittext>
    <edittext android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignright="@+id/editText1" android:layout_below="@+id/editText1" android:layout_margintop="24dp" android:ems="10"></edittext>
    <textview android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/editText1" android:layout_alignbottom="@+id/editText1" android:layout_alignparentleft="true" android:text="File Name:"></textview>
    <textview android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/editText2" android:layout_alignbottom="@+id/editText2" android:layout_alignparentleft="true" android:text="Data:"></textview>
    <button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/editText2" android:layout_below="@+id/editText2" android:layout_marginleft="70dp" android:layout_margintop="16dp" android:text="save"></button>
    <button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/button1" android:layout_alignbottom="@+id/button1" android:layout_torightof="@+id/button1" android:text="read"></button>
</relativelayout>

让无涯教程编写代码来写入和读取内部存储的数据。

无涯教程网

File: MainActivity.java
package example.learnfk.com.internalstorage;

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 android.widget.Toast;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class MainActivity extends AppCompatActivity {
    EditText editTextFileName,editTextData;
    Button saveButton,readButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editTextFileName=findViewById(R.id.editText1);
        editTextData=findViewById(R.id.editText2);
        saveButton=findViewById(R.id.button1);
        readButton=findViewById(R.id.button2);

        //对读取按钮执行操作
        saveButton.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                String filename=editTextFileName.getText().toString();
                String data=editTextData.getText().toString();

                FileOutputStream fos;
                try {
                    fos = openFileOutput(filename, Context.MODE_PRIVATE);
                    //默认模式是 PRIVATE,可以是 APPEND 等。
                    fos.write(data.getBytes());
                    fos.close();

                    Toast.makeText(getApplicationContext(),filename + " saved",
                            Toast.LENGTH_LONG).show();


                } catch (FileNotFoundException e) {e.printStackTrace();}
                catch (IOException e) {e.printStackTrace();}

            }

        });

        //对读取按钮执行操作
        readButton.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View arg0) {
                String filename=editTextFileName.getText().toString();
                StringBuffer stringBuffer = new StringBuffer();
                try {
                    //借助 InputStreamReader 将 BufferedReader 附加到 FileInputStream
                    BufferedReader inputReader = new BufferedReader(new InputStreamReader(
                            openFileInput(filename)));
                    String inputString;
                    //逐行读取数据并将其存储到字符串缓冲区中
                    while ((inputString = inputReader.readLine()) != null) {
                        stringBuffer.append(inputString + "\n");
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }
                //在 toast 上显示数据
            Toast.makeText(getApplicationContext(),stringBuffer.toString(),Toast.LENGTH_LONG).show();

            }

        });
    }
}

运行上面代码输出

链接:https://www.learnfk.comhttps://www.learnfk.com/android/android-internal-storage-example.html

来源:LearnFk无涯教程网

android internal storage 1android internal storage 2android internal storage 3android internal storage 4android internal storage 5

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

程序员的数学基础课 -〔黄申〕

OpenResty从入门到实战 -〔温铭〕

设计模式之美 -〔王争〕

Spark核心原理与实战 -〔王磊〕

恋爱必修课 -〔李一帆〕

如何落地业务建模 -〔徐昊〕

程序员的个人财富课 -〔王喆〕

手把手带你写一个 MiniTomcat -〔郭屹〕

工程师个人发展指南 -〔李云〕

好记忆不如烂笔头。留下您的足迹吧 :)