File存储——IO操作文件
openFileOutput、openFileInput
Context提供了如下两个方法来打开本应用程序的数据文件夹里面的文件IO流。
1.FileInputStream openFileInput(String name):打开应用程序中的数据文件夹下的name文件对应输入流
2.FileOutputStream openFileOutput(String name,int mode):打开应用程序的数据文件下的name文件对应的输出流
注意:
FileOutputStream openFileOutput(String name,int mode)中mode参数用于指定打开文件的模式,支持模式如下:
1.MODE_PRIVATE:改文件只能被当前程序读写;
2.MODE_APPEND:以追加的方式打开该文件,应用程序可以向该文件中追加内容;
3.MODE_WORLD_READABLE:该文件的内容可以被其他程序读取(只读);
4.MODE_WORLD_WRITEABLE:该文件的内容可以不其他程序读、写;
除此之外,Context还提供了如下两个方法来访问应用程序的数据文件夹.
1.getDir(String name,int mode):在应用程序的数据文件夹下获取或创建name对应的子目录;
2.File getFilesDir():获取该应用程序的数据文件夹的绝对路径;
3.String[] fileList():返回该应用程序的数据文件夹下的全部文件;
4.deleteFile(String):删除该应用程序的数据文件夹下指定的文件;
实例如下:实现读写应用程序数据文件夹内的文件。
布局文件==》 <LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:id="@+id/edit1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="write" /> <EditText android:id="@+id/edit2" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnTwo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="read" /> </LinearLayout> 代码实现==》 package com.example.myfile; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.PrintStream; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { final String FILE_NAME = "crazyit.bin"; EditText Edit1; EditText Edit2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnOne = (Button) this.findViewById(R.id.btnone); Button btnTwo = (Button) this.findViewById(R.id.btnTwo); Edit1 = (EditText) this.findViewById(R.id.edit1); Edit2 = (EditText) this.findViewById(R.id.edit2); btnOne.setOnClickListener(new MyButtonClick()); btnTwo.setOnClickListener(new MyButtonClick()); } private class MyButtonClick implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnone: Log.i("swg", "write==" +Edit1.getText()); write(Edit1.getText().toString()); Edit1.setText(""); break; case R.id.btnTwo: Log.i("swg", "read==" +read()); Edit2.setText(read()); break; } } private String read() { try { FileInputStream fis = openFileInput(FILE_NAME); byte[] buff = new byte[1024]; int hasread = 0; StringBuilder sb = new StringBuilder(""); while ((hasread = fis.read(buff)) > 0) { sb.append(new String(buff, 0, hasread)); } return sb.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } private void write(String content) { try { // 以追加模式打开文件输出流 FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND); // 将FileOutputStream包装成PrintStream PrintStream ps = new PrintStream(fos); // 输出文件内容 ps.println(content); ps.close(); } catch (Exception e) { e.printStackTrace(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
运行效果: