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

  • 相关阅读:
    poj 1328 Radar Installation (贪心)
    hdu 2037 今年暑假不AC (贪心)
    poj 2965 The Pilots Brothers' refrigerator (dfs)
    poj 1753 Flip Game (dfs)
    hdu 2838 Cow Sorting (树状数组)
    hdu 1058 Humble Numbers (DP)
    hdu 1069 Monkey and Banana (DP)
    hdu 1087 Super Jumping! Jumping! Jumping! (DP)
    必须知道的.NET FrameWork
    使用记事本+CSC编译程序
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6252593.html
Copyright © 2011-2022 走看看