Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > 安卓应用中读写txt文件

Android应用程序中读写txt文本文件的基本方法讲解

作者:chenzheng_java

这篇文章主要介绍了Android应用程序中读写txt文本文件的基本方法讲解,基本上依靠context.openFileInput()和context.openFileOutput()两个方法为主,需要的朋友可以参考下

2016412163511854.gif (370×345)

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

2016412163541130.gif (235×373)

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  > 
<TextView  
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:text="请您输入要保存的内容:" 
  /> 
 <EditText 
  android:id="@+id/addText" 
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content" 
  android:hint="请您在此处输入文件内容!" 
 />   
 <Button  
  android:id="@+id/addButton" 
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content" 
  android:text="save" 
 /> 
 <Button 
  android:id="@+id/showButton" 
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content" 
  android:text="show" 
 /> 
 <TextView 
  android:id="@+id/showText"  
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  /> 
  
</LinearLayout> 

activity代码

package cn.com.file; 
 
import java.io.ByteArrayOutputStream; 
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 FileTest extends Activity { 
  private EditText editText; 
  private TextView showTextView; 
  // 要保存的文件名 
  private String fileName = "chenzheng_java.txt"; 
 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.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() { 
 
    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); 
      outputStream.write(content.getBytes()); 
      outputStream.flush(); 
      outputStream.close(); 
      Toast.makeText(FileTest.this, "保存成功", Toast.LENGTH_LONG).show(); 
    } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
 
  } 
 
  /** 
   * @author chenzheng_java 
   * 读取刚才用户保存的内容 
   */ 
  private void read() { 
    try { 
      FileInputStream inputStream = this.openFileInput(fileName); 
      byte[] bytes = new byte[1024]; 
      ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); 
      while (inputStream.read(bytes) != -1) { 
        arrayOutputStream.write(bytes, 0, bytes.length); 
      } 
      inputStream.close(); 
      arrayOutputStream.close(); 
      String content = new String(arrayOutputStream.toByteArray()); 
      showTextView.setText(content); 
 
    } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
 
  } 
 
} 

其他的都为默认。

关于文件保存的路径可以通过ADT携带的File Explorer工具进行查看。如何调出File Explorer工具呢;我们可以通过Windows--showView--others-android下面看到File Explorer。这里是我的一个截图。

2016412163634268.gif (776×235)

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

您可能感兴趣的文章:
阅读全文