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

简介:

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

main.xml

 

[xhtml]  view plain  copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:<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.    
  36. </LinearLayout>  
 

 

 

 

activity代码

复制代码
  1 package dome.file.com.filedome;
  2 
  3 import android.content.Context;
  4 import android.support.v7.app.AppCompatActivity;
  5 import android.os.Bundle;
  6 import android.util.Log;
  7 import android.widget.EditText;
  8 import android.widget.TextView;
  9 
 10 import java.io.BufferedReader;
 11 import java.io.BufferedWriter;
 12 import java.io.ByteArrayOutputStream;
 13 import java.io.FileInputStream;
 14 import java.io.FileNotFoundException;
 15 import java.io.FileOutputStream;
 16 import java.io.IOException;
 17 import java.io.InputStreamReader;
 18 import java.io.OutputStreamWriter;
 19 import java.io.FileInputStream;
 20 import java.io.FileNotFoundException;
 21 import java.io.FileOutputStream;
 22 import java.io.IOException;
 23 
 24 import android.app.Activity;
 25 import android.os.Bundle;
 26 import android.view.View;
 27 import android.view.View.OnClickListener;
 28 import android.widget.Button;
 29 import android.widget.EditText;
 30 import android.widget.TextView;
 31 import android.widget.Toast;
 32 
 33 public class MainActivity extends AppCompatActivity {
 34 
 35     private EditText editText;
 36     private TextView showTextView;
 37     // 要保存的文件名
 38     private String fileName = "chenzheng_java.txt";
 39 
 40     @Override
 41     public void onCreate(Bundle savedInstanceState) {
 42         super.onCreate(savedInstanceState);
 43         setContentView(R.layout.activity_main);
 44         // 获取页面中的组件
 45         editText = (EditText) findViewById(R.id.addText);
 46         showTextView = (TextView) findViewById(R.id.showText);
 47         Button addButton = (Button) this.findViewById(R.id.addButton);
 48         Button showButton = (Button) this.findViewById(R.id.showButton);
 49         // 绑定单击事件
 50         addButton.setOnClickListener(listener);
 51         showButton.setOnClickListener(listener);
 52 
 53     }
 54 
 55     // 声明监听器
 56     private View.OnClickListener listener = new OnClickListener() {
 57         public void onClick(View v) {
 58             Button view = (Button) v;
 59             switch (view.getId()) {
 60                 case R.id.addButton:
 61                     save();
 62                     break;
 63                 case R.id.showButton:
 64                     read();
 65                     break;
 66 
 67             }
 68 
 69         }
 70 
 71     };
 72 
 73     /**
 74      * @author chenzheng_Java
 75      * 保存用户输入的内容到文件
 76      */
 77     private void save() {
 78         BufferedWriter bufferdWriter = null;
 79         String content = editText.getText().toString();
 80         try {
 81             /* 根据用户提供的文件名,以及文件的应用模式,打开一个输出流.文件不存系统会为你创建一个的,
 82              * 至于为什么这个地方还有FileNotFoundException抛出,我也比较纳闷。在Context中是这样定义的
 83              *   public abstract FileOutputStream openFileOutput(String name, int mode)
 84              *   throws FileNotFoundException;
 85              * openFileOutput(String name, int mode);
 86              * 第一个参数,代表文件名称,注意这里的文件名称不能包括任何的/或者/这种分隔符,只能是文件名
 87              *          该文件会被保存在/data/data/应用名称/files/chenzheng_java.txt
 88              * 第二个参数,代表文件的操作模式
 89              *          MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖
 90              *          MODE_APPEND  私有   重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件
 91              *          MODE_WORLD_READABLE 公用  可读
 92              *          MODE_WORLD_WRITEABLE 公用 可读写
 93              *  */
 94             FileOutputStream outputStream = openFileOutput(fileName,
 95                     Activity.MODE_PRIVATE);
 96             bufferdWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
 97             bufferdWriter.write(content);
 98             Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();
 99         } catch (Exception e) {
100             e.printStackTrace();
101         } finally {
102 
103             try {
104                 if (bufferdWriter != null) {
105                     bufferdWriter.close();
106                 }
107             } catch (IOException e) {
108                 e.printStackTrace();
109             }
110 
111 
112         }
113 
114     }
115 
116     /**
117      * @author chenzheng_java
118      * 读取刚才用户保存的内容
119      */
120     private void read() {
121 
122         BufferedReader bufferedReader = null;
123         try {
124             FileInputStream inputStream = this.openFileInput(fileName);
125 
126             bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
127             StringBuilder stirngBuidler = new StringBuilder();
128             String line = "";
129             while ((line = bufferedReader.readLine()) != null) {
130                 stirngBuidler.append(line);
131             }
132 
133             showTextView.setText(stirngBuidler.toString());
134 
135         } catch (Exception e) {
136             e.printStackTrace();
137         } finally {
138 
139             try {
140                 if (bufferedReader != null) {
141                     bufferedReader.close();
142                 }
143             } catch (IOException e) {
144                 e.printStackTrace();
145             }
146 
147 
148         }
149 
150     }
151 
152 }
复制代码

 

 

其他的都为默认。

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

 

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






    本文转自 一点点征服   博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/6252593.html,如需转载请自行联系原作者


相关文章
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
4月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
325 1
|
6月前
|
存储 数据库 Android开发
安卓Jetpack Compose+Kotlin,支持从本地添加音频文件到播放列表,支持删除,使用ExoPlayer播放音乐
为了在UI界面添加用于添加和删除本地音乐文件的按钮,以及相关的播放功能,你需要实现以下几个步骤: 1. **集成用户选择本地音乐**:允许用户从设备中选择音乐文件。 2. **创建UI按钮**:在界面中创建添加和删除按钮。 3. **数据库功能**:使用Room数据库来存储音频文件信息。 4. **更新ViewModel**:处理添加、删除和播放音频文件的逻辑。 5. **UI实现**:在UI层支持添加、删除音乐以及播放功能。
|
2月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
151 0
|
4月前
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
158 1
|
4月前
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
134 0
|
6月前
|
Java 开发工具 Android开发
详细解读Android开发DNK开发将.c文件打包成os
详细解读Android开发DNK开发将.c文件打包成os
35 0
|
6月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
329 0
|
6月前
|
缓存 大数据 Android开发
Android 巧用putBinder方法传递大文件
Android 巧用putBinder方法传递大文件
152 0
|
6月前
|
开发工具 Android开发
Android 代码自定义drawble文件实现View圆角背景
Android 代码自定义drawble文件实现View圆角背景
196 0