内部存储 openFileInputStream openFileOutputStream

  1 package com.qianfeng.gp08_day24_internalstorage;
  2 
  3 import java.io.FileInputStream;
  4 import java.io.FileNotFoundException;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.util.Arrays;
  8 
  9 import android.os.Bundle;
 10 import android.app.Activity;
 11 import android.app.AlertDialog;
 12 import android.content.Context;
 13 import android.content.DialogInterface;
 14 import android.content.DialogInterface.OnClickListener;
 15 import android.view.Menu;
 16 import android.view.MenuItem;
 17 import android.view.View;
 18 import android.widget.ArrayAdapter;
 19 import android.widget.EditText;
 20 
 21 /**
 22  * 内部存储: SharedPreferences属于内部存储
 23  *        openFileOutput()  openFileInput()
 24  *        其实还是以文件的形式存储数据,IO   
 25  *                                   /shared_prefs/
 26  * 内部存储的文件的存放位置  /data/data/(包名)/files/
 27  *
 28  */
 29 public class MainActivity extends Activity {
 30 
 31     private EditText edit_fileName,edit_content;
 32     
 33     //点击菜单项,弹出对话框,列出所有的内部存储空间中的文件
 34     private AlertDialog  fileDialog;
 35     private ArrayAdapter<String> adapter;
 36     
 37     @Override
 38     protected void onCreate(Bundle savedInstanceState) {
 39         super.onCreate(savedInstanceState);
 40         setContentView(R.layout.activity_main);
 41         
 42         edit_fileName = (EditText) findViewById(R.id.edit_fileName);
 43         edit_content = (EditText) findViewById(R.id.edit_fileContent);
 44         
 45         initDialog();
 46     }
 47     
 48     //初始化对话框的功能
 49     public void initDialog()
 50     {
 51         adapter  = new ArrayAdapter<String>(this,R.layout.item_layout);
 52         //得到内部存储空间中的所有的文件名 fileList()
 53         adapter.addAll(Arrays.asList(fileList()));
 54         
 55         fileDialog = new AlertDialog.Builder(this)
 56                                     .setTitle("文件选择对话框")
 57                                     .setIcon(R.drawable.ic_launcher)
 58                                     .setAdapter(adapter, new OnClickListener() {
 59                                         
 60                                         @Override
 61                                         public void onClick(DialogInterface dialog, int which) {
 62                                             //得到文件名
 63                                             String filename = adapter.getItem(which);
 64                                             edit_fileName.setText(filename);
 65                                             // 读取文件
 66                                             try {
 67                                                 readData(null);
 68                                             } catch (IOException e) {
 69                                                 e.printStackTrace();
 70                                             }
 71                                         }
 72                                     })
 73                                     .create();
 74         
 75     }
 76     
 77     
 78     public void saveFile(View v) throws IOException//把数据保存到内部存储空间的文件中
 79     {
 80         //获取文件名和文件内容
 81         String filename = edit_fileName.getText().toString().trim();
 82         String filecontent = edit_content.getText().toString().trim();
 83         
 84         FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
 85         fos.write(filecontent.getBytes());
 86         
 87         fos.close();                                                
 88     }
 89     
 90     public void readData(View v) throws IOException
 91     {
 92         //获取被读取的文件名
 93         String filename = edit_fileName.getText().toString().trim();
 94         
 95         //读取文件
 96         FileInputStream fis = openFileInput(filename);
 97         byte[] arr = new byte[fis.available()];
 98         int len = fis.read(arr);
 99         edit_content.setText(new String(arr,0,len));
100         fis.close();
101     }
102 
103     @Override
104     public boolean onCreateOptionsMenu(Menu menu) {
105         getMenuInflater().inflate(R.menu.main, menu);
106         return true;
107     }
108     @Override
109     public boolean onOptionsItemSelected(MenuItem item) {
110         if(item.getItemId()==R.id.action_selectFile)
111         {
112             fileDialog.show();
113         }
114         return super.onOptionsItemSelected(item);
115     }
116 
117 }
MainActivity
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10 
11     <EditText
12         android:id="@+id/edit_fileName"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:hint="输入文件名" />
16 
17     <Button
18         android:id="@+id/btn_open"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:onClick="readData"
22         android:layout_toRightOf="@id/edit_fileName"
23         android:text="打开" />
24 
25     <Button
26         android:id="@+id/btn_save"
27         android:layout_width="wrap_content"
28         android:layout_height="wrap_content"
29         android:layout_toRightOf="@id/btn_open"
30         android:onClick="saveFile"
31         android:text="保存" />
32     <EditText
33         android:id="@+id/edit_fileContent"
34         android:layout_width="match_parent"
35         android:layout_height="match_parent"
36         android:layout_below="@id/btn_save"
37         android:background="@android:drawable/edit_text"
38         android:hint="文件内容" />
39 
40 </RelativeLayout>
activity_main
1 <?xml version="1.0" encoding="utf-8"?>
2 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
3     android:layout_width="match_parent"
4     android:layout_height="wrap_content"
5     android:textSize="20sp" 
6     android:textColor="#000"
7     />
8     
item——layout
原文地址:https://www.cnblogs.com/bimingcong/p/4822418.html