欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 文件IO流的存储和读取

程序员文章站 2022-07-14 20:54:45
...

一、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());
	   }
});