当前位置: 首页 > 编程笔记 >

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

史鸿运
2023-03-14
本文向大家介绍Android应用程序中读写txt文本文件的基本方法讲解,包括了Android应用程序中读写txt文本文件的基本方法讲解的使用技巧和注意事项,需要的朋友参考一下

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

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。这里是我的一个截图。

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

 类似资料:
  • 本文向大家介绍C#读写文本文件的方法,包括了C#读写文本文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#读写文本文件的方法。分享给大家供大家参考。具体分析如下: System.IO命名空间中的类为托管应用程序提供文件以及其他形式的输入输出。托管i/o的基本构件是流,而流是字节导向的数据的抽象表示。流通过System.IO.Stream类表示. System.IO.FileSt

  • 我的项目中有这样一段代码: 没有错误,应用程序运行正常,但是变量中从来没有任何文本,我确信txt文件中有文本! 我已经尝试过不同的方法来读取文本文件(使用BufferedReader、Scanner、FileInputStream和FileReader),但都不起作用。 另外,我几乎可以肯定问题不在变量中,因为我尝试通过代码(使用运行时)打开文件,它正常打开了正确的文件。 好的,我尝试添加,但是仍

  • 问题内容: 我正在尝试更改文本文件中的某些行,而不影响其他行。这就是文本文件“ text.txt”中的内容 我的目标是更改第4行和第5行,但其余部分保持不变。 即使代码有效,我想知道是否有更好,更有效的方法?是否可以仅通过行号读取文件? 问题答案: 您没有什么可以改善的。但是您必须将所有行都写入 一个新文件 ,无论已更改还是未更改。较小的改进将是: 使用该语句; 避免将行存储在列表中; 子句中不带

  • 本文向大家介绍python 读写txt文件 json文件的实现方法,包括了python 读写txt文件 json文件的实现方法的使用技巧和注意事项,需要的朋友参考一下 首先第一步,打开文件,有两个函数可供选择:open() 和  file() ①. f = open('file.txt',‘w')    ...  file.close()    ②. f = file('file.json','r

  • 有了这个代码,我想要一个. jar文件来读取文本文件“file.txt”,它位于文件夹数据的jar中。这是一个应用程序编程与处理,所以我想读的所有文件都在数据文件夹中。有人能解释为什么我得到一个NullPointerExcema吗?文件存在并包含文本。

  • 本文向大家介绍Android编程中读写私有文件的方法,包括了Android编程中读写私有文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程中读写私有文件的方法。分享给大家供大家参考,具体如下: 所谓私有文件,则是指程序自己能读取,而其它程序没有权限访问的文件,此文件保存在Data.app.程序包.file目录下面。 其中写文件的方法比较简单: 这样可以完成对私有文