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 }
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>
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