Android中 File 存储(openFileOutput/openFileInput)
2017-03-30 17:10
561 查看
File 存储
在上一篇的博文中说到了SharedPreferences中提到了SharedPreferences局限性很大,只能存储Java基础数据,所以在某些时候它并不能满足我们的需求,有时候就需要用File存储了。FileInputStream openFileInput(String name) 对应的是文件输入流 FileOutputStream openFileOutput(String name, int mode) 对应的是输出流
在输出流中的mode模式是说指定打开文件的模式,可以理解为你的数据权限,有以下几种:
MODE_PRIVATE :数据只能被本程序读和写 MODE_WORLD_READABLE :数据可以被其他程序读取,但是不能被写入 MODE_WORLD_WRITABLE :数据可以被其他程序读、写 MODE_APPEND :以追加的方式打开文件,可以向里面追加内容
ok,用一个小例子来说明一下:
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.TextView; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.PrintStream; public class MainActivity extends AppCompatActivity { // write private Button bt1; // read private Button bt2; private EditText text; private TextView view; final String FILE_NAME = "fileSave"; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1 = (Button) findViewById(R.id.button); bt2 = (Button) findViewById(R.id.button2); text = (EditText) findViewById(R.id.editText); view = (TextView) findViewById(R.id.textView); bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { write(text.getText().toString()); text.setText(""); } }); bt2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { view.setText(read()); } }); } public String read() { try { // 打开文件输入流,对应的文件名要绑定 FileInputStream inputStream = openFileInput(FILE_NAME); byte[] buff = new byte[1024]; int hasread = 0; StringBuilder stringBuilder = new StringBuilder(""); // 读取文件的内容 while ((hasread = inputStream.read(buff)) > 0) stringBuilder.append(new String(buff, 0, hasread)); // 关闭流并且返回数据 inputStream.close(); return stringBuilder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } public void write(final String content) { try { // 打开文件的输出流,方式我们定义为追加 FileOutputStream outputStream = openFileOutput(FILE_NAME, MODE_APPEND); PrintStream printStream = new PrintStream(outputStream); // content就是我们要追加的内容,输入之后要关闭流 printStream.print(content); printStream.close(); } catch (Exception e) { e.printStackTrace(); } } }
在我们的布局文件中就是简单的设置了两个 按钮,一个输入框,一个文本框,来看下成果
点击了读写按钮之后的结果:
相关文章推荐
- android:内部存储空间 IO 操作openFileInput()、output(13)
- android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
- Android数据存储之文件 openFileOutput & openFileInput
- android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
- android 文件存储(openFileOutPut 和 openFileInput())
- android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
- Android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
- Android文件操作中的openFileOutPut和openFileInput
- Android openFileOutput 和 openFileInput
- 【Android】android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()
- android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()
- android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput() .
- 内部存储之 openfileinput openfileoutput使用
- android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()
- Android openFileOutput 和 openFileInput
- Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)
- android文件操作OpenFileInput OpenFileOutput
- Android文件操作中的openFileOutPut和openFileInput
- Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)
- 文件存储openFileOutput和openFileInput