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 }