android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

时间:2023-03-09 09:11:27
android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示。

android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:<a href="http://lib.csdn.net/base/15" class='replace_word' title="Android知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Android</a>="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="请您输入要保存的内容:"
  11. />
  12. <EditText
  13. android:id="@+id/addText"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:hint="请您在此处输入文件内容!"
  17. />
  18. <Button
  19. android:id="@+id/addButton"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:text="save"
  23. />
  24. <Button
  25. android:id="@+id/showButton"
  26. android:layout_width="wrap_content"
  27. android:layout_height="wrap_content"
  28. android:text="show"
  29. />
  30. <TextView
  31. android:id="@+id/showText"
  32. android:layout_width="fill_parent"
  33. android:layout_height="wrap_content"
  34. />
  35. </LinearLayout>

activity代码

 package dome.file.com.filedome;

 import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText editText;
private TextView showTextView;
// 要保存的文件名
private String fileName = "chenzheng_java.txt"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取页面中的组件
editText = (EditText) findViewById(R.id.addText);
showTextView = (TextView) findViewById(R.id.showText);
Button addButton = (Button) this.findViewById(R.id.addButton);
Button showButton = (Button) this.findViewById(R.id.showButton);
// 绑定单击事件
addButton.setOnClickListener(listener);
showButton.setOnClickListener(listener); } // 声明监听器
private View.OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
Button view = (Button) v;
switch (view.getId()) {
case R.id.addButton:
save();
break;
case R.id.showButton:
read();
break; } } }; /**
* @author chenzheng_Java
* 保存用户输入的内容到文件
*/
private void save() {
BufferedWriter bufferdWriter = null;
String content = editText.getText().toString();
try {
/* 根据用户提供的文件名,以及文件的应用模式,打开一个输出流.文件不存系统会为你创建一个的,
* 至于为什么这个地方还有FileNotFoundException抛出,我也比较纳闷。在Context中是这样定义的
* public abstract FileOutputStream openFileOutput(String name, int mode)
* throws FileNotFoundException;
* openFileOutput(String name, int mode);
* 第一个参数,代表文件名称,注意这里的文件名称不能包括任何的/或者/这种分隔符,只能是文件名
* 该文件会被保存在/data/data/应用名称/files/chenzheng_java.txt
* 第二个参数,代表文件的操作模式
* MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖
* MODE_APPEND 私有 重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件
* MODE_WORLD_READABLE 公用 可读
* MODE_WORLD_WRITEABLE 公用 可读写
* */
FileOutputStream outputStream = openFileOutput(fileName,
Activity.MODE_PRIVATE);
bufferdWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferdWriter.write(content);
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
} finally { try {
if (bufferdWriter != null) {
bufferdWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
} } } /**
* @author chenzheng_java
* 读取刚才用户保存的内容
*/
private void read() { BufferedReader bufferedReader = null;
try {
FileInputStream inputStream = this.openFileInput(fileName); bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stirngBuidler = new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
stirngBuidler.append(line);
} showTextView.setText(stirngBuidler.toString()); } catch (Exception e) {
e.printStackTrace();
} finally { try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e) {
e.printStackTrace();
} } } }

其他的都为默认。

关于文件保存的路径可以通过ADT携带的File Explorer工具进行查看。如何调出File Explorer工具呢;我们可以通过Windows--showView--others-android下面看到File Explorer。这里是我的一个截图。android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

对于这个程序,基本上没什么难点,就是纯粹的java流知识。唯一不同的就是context为我们提供了两个方法来获取输入输出流。简单、方便、快捷啊。