zoukankan      html  css  js  c++  java
  • 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为我们提供了两个方法来获取输入输出流。简单、方便、快捷啊。

  • 相关阅读:
    Spring事务传播特性NOT_SUPPORTED使用演示
    spring配置基于xml的声明式事务
    反射的简单应用
    MyBatis批处理工具类MyBatisBatchHelper.java
    Mybatis分页插件PageHelper的使用
    利用Spring的Profile加载指定数据源
    Nginx状态信息(status)配置及信息详解
    nginx配置基于域名、端口、IP的虚拟主机
    Nginx Linux安装与部署
    rename 批量修改文件名简单用法
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6252593.html
Copyright © 2011-2022 走看看