Android存储概念
File内部存储
通过file=openFileOutput()获得,将数据存储在data/data/+包名+files下面。
layout布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="15dp"> <EditText android:id="@+id/et_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入内容"/> <Button android:id="@+id/btn_save" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="保存" android:textSize="20sp"/> <Button android:id="@+id/btn_show" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="显示" android:textSize="20sp"/> <TextView android:id="@+id/tv_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"/> </LinearLayout>
Activity:
package com.example.helloworld.datastorage; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.example.helloworld.R; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileActivity extends AppCompatActivity { private EditText mEtName; private Button mBtnSave,mBtnShow; private TextView mTvContent; private final String mFileName = "test.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file); mEtName = findViewById(R.id.et_name); mBtnSave = findViewById(R.id.btn_save); mBtnShow = findViewById(R.id.btn_show); mTvContent = findViewById(R.id.tv_content); mBtnSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { save(mEtName.getText().toString()); } }); mBtnShow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mTvContent.setText(read()); } }); } //存储数据 private void save(String content){ FileOutputStream fileOutputStream = null; try { fileOutputStream = openFileOutput(mFileName,MODE_PRIVATE); fileOutputStream.write(content.getBytes()); } catch (IOException e) { e.printStackTrace(); } finally { if(fileOutputStream != null){ try{ fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } //读取数据 private String read(){ FileInputStream fileInputStream = null; try { fileInputStream = openFileInput(mFileName); byte[] buff = new byte[1024]; //用StringBuilder来实现字符串拼接 StringBuilder sb = new StringBuilder(); int len = 0; while((len = fileInputStream.read(buff)) > 0){ sb.append(new String(buff,0,len)); } return sb.toString(); } catch (IOException e) { e.printStackTrace(); }finally { if(fileInputStream != null){ try{ fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } }