Android 文件IO流的存儲和讀取

一、File 內部存儲:

1、存儲信息的函數:

//存儲信息
private void save(String content){
    FileOutputStream fileOutputStream=null;
    try {
        fileOutputStream=openFileOutput(mFileName, MODE_PRIVATE);
        fileOutputStream.write(content.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        try {
            assert fileOutputStream != null;
            fileOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

2、讀取信息的函數:

//讀取信息
private String read(){
    FileInputStream fileInputStream=null;
    try {
        fileInputStream=openFileInput(mFileName);
        byte[] buff=new byte[1024];
        StringBuilder sb=new StringBuilder();
        int len=0;
        while ((len=fileInputStream.read(buff)) >0 ){
            sb.append(new String(buff,0, len));
        }
        return sb.toString();
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        try {
            if (fileInputStream != null) {
                fileInputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return  null;
}

3、在 button 按鈕監聽事件中調用:

//存儲
  mBtnFileSave.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          save(mEtFileName.getText().toString());
      }
  });
//讀取
  mBtnFileShow.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          mTvFileContent.setText(read());
      }
  });

二、File外部存儲:

1、先在 AndroidManifest.xml 文件中添加訪問權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2、在 app 首頁界面對應的 Activity 中的 onCreate 方法中添加:

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);

3、在本頁面 Activity 中添加存儲信息的函數:

//存儲信息
private void save(String content){
   FileOutputStream fileOutputStream=null;
   try {
       //創建文件夾
       File dir=new File(Environment.getExternalStorageDirectory(), "FILE");
       if (!dir.exists()){
           dir.mkdirs();
       }
       //創建文件
       File file=new File(dir, mFileName);
       if (!file.exists() ){
           file.createNewFile();
       }
       fileOutputStream=new FileOutputStream(file);
       fileOutputStream.write(content.getBytes());
   } catch (IOException e) {
       e.printStackTrace();
   }finally {
       try {
           assert fileOutputStream != null;
           fileOutputStream.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

}

4、添加讀取信息的函數:

//讀取信息
private String read(){
   FileInputStream fileInputStream=null;
   try {
       File file=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator + "FILE",mFileName);
       fileInputStream = new FileInputStream(file);
       byte[] buff=new byte[1024];
       StringBuilder sb=new StringBuilder();
       int len=0;
       while ((len=fileInputStream.read(buff)) >0 ){
           sb.append(new String(buff,0, len));
       }
       return sb.toString();
   } catch (IOException e) {
       e.printStackTrace();
   }finally {
       try {
           if (fileInputStream != null) {
               fileInputStream.close();
           }
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
   return  null;
}

5、在 onCreate 函數中調用以上兩個方法:

//存儲
mBtnFileSave.setOnClickListener(new View.OnClickListener() {
	   @Override
	   public void onClick(View v) {
	       save(mEtFileName.getText().toString());
	   }
});
//讀取
mBtnFileShow.setOnClickListener(new View.OnClickListener() {
	   @Override
	   public void onClick(View v) {
	       mTvFileContent.setText(read());
	   }
});
發佈了81 篇原創文章 · 獲贊 56 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章