自帶內存上的讀寫(openFileOutput和openFileInput)

自帶內存上的讀寫(openFileOutput和openFileInput)android

效果圖示例編輯器

 

 

//這是在手機自帶內存上的讀和寫操做 -- 數據保存在data/data/包名/ide

//和SharePeferences讀和寫同樣都是在自帶內存上操做的,而SharePeferences利用編輯器進行讀寫操做佈局

//這個功能是利用openFileOutput和openFileInput進行寫和讀操做 -- 相同點:都是在自帶內存上操做ui

 

 

============================this

 

一、activity_main.xml佈局文件xml

 

代碼事件

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >內存

    <LinearLayout
        android:id="@+id/one_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >utf-8

        <EditText
            android:id="@+id/edit_filename"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:hint="文件名" />

        <Button
            android:id="@+id/bt_sava"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="保存"
            android:onClick="sava"/>

        <Button
            android:id="@+id/bt_read"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="讀取"
            android:onClick="read" />
    </LinearLayout>

    <EditText
        android:id="@+id/edit_filecontent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/one_layout"
        android:background="#000"
        android:hint="文件內容"
        android:textColor="#fff" />

</RelativeLayout>

 

--------------------------------

 

 

二、菜單menu佈局的main_menu.xml佈局文件

代碼

 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/selected"
        android:title="選擇文件列表"/>

</menu>

 

 

==============================

 

 

三、MainActivity 類

 

代碼

 

public class MainActivity extends Activity {

 private EditText edit_filename;
 private EditText edit_filecontent;
 private ArrayAdapter<String> adapter;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  this.edit_filename = (EditText) this.findViewById(R.id.edit_filename);
  this.edit_filecontent = (EditText) this.findViewById(R.id.edit_filecontent);
  
 }
 
 //建立一個靜態選擇菜單
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main_menu, menu);
  return super.onCreateOptionsMenu(menu);
 }
 //菜單的點擊 事件 監聽
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  if(item.getItemId() == R.id.selected){
   //彈出一個選擇要讀的文件名 列表框
   Dialog();
  //獲取當前文件名 列表

//利用fileList()方法來讀取內存裏的文件

  adapter.addAll(fileList());
  }
  return super.onOptionsItemSelected(item);
 }
 
 private void Dialog() {
  //當點擊菜單 列表 時 建立一個 選擇文件列表框
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    //設置 框的 屬性
    builder.setTitle("選擇要讀取的文件名");
    builder.setIcon(R.drawable.ic_launcher);
    //new一個適配器 -- 該適配器 尚未內容
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
    //把文件名 添加到 列表框
    builder.setAdapter(adapter, new OnClickListener() {
     
     @Override
     public void onClick(DialogInterface dialog, int which) {
      String filename = adapter.getItem(which);
      edit_filename.setText(filename);
      //把選擇的文件名 讀取內容
      read(null);
     }
    });
    builder.show();
 }

 //保存文件 public void sava(View view){  //獲取輸入的 文件名  String file_name = edit_filename.getText().toString().trim();  //獲取edit裏的文件的 內容  String file_content = edit_filecontent.getText().toString().trim();  //把得到的 文件名 和文件內容 保存到 內存  try {   //第一個參數 -- 要保存的文件名   //第二個參數 -- 寫的模式   OutputStream os = openFileOutput(file_name, Context.MODE_PRIVATE);   //把須要的數據 寫入內存   os.write(file_content.getBytes());   //提示   Toast.makeText(this, "保存成功!", Toast.LENGTH_SHORT).show();     os.close();  } catch (Exception e) {   e.printStackTrace();  } }  //讀取保存的文件 public void read(View view){  //獲取要讀的文件名  String file_name = edit_filename.getText().toString().trim();  //打開 要讀的文件名  try {   InputStream is = openFileInput(file_name);   byte[] b_read = new byte[is.available()];//文件的長度 粗略   is.read(b_read);   //把讀完的 文件內容 顯示到 edit 編輯框   edit_filecontent.setText(new String(b_read));   is.close();  } catch (Exception e) {   e.printStackTrace();  } }}

相關文章
相關標籤/搜索