无涯教程能够从设备内部存储器中保存或读取数据。 FileInputStream和FileOutputStream类用于读取和写入文件。
在这里,无涯教程将读取和写入设备的内部存储数据。
从面板上拖动2个edittexts,2个textviews和2个按钮,现在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>
让无涯教程编写代码来写入和读取内部存储的数据。
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无涯教程网
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)