2019.07.12 Android 保存与读取文件

  • 申请权限(AndroidManifest.xml中)

    应用程序文件夹(data\data<包名>\files)读写权限
    手机存储目录读写权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />

动态权限申请(调用文件读写的java类中)

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

动态权限的申请只需要一个语句即可,格式为
ActivityCompat.requestPermissions(MainActivity.this, new String[]{ 权限1,权限2,权限3,…},1);

  • 导入包(调用文件读写的java类中)

    文件读写相关
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
  • 使用

应用程序文件夹文件的读写

    //向应用程序文件夹保存文件
    private void SaveString(String Filename,String string){
    	// Filename :  文件名
    	// string : 要保存的字符串
        try {
            FileOutputStream file=this.openFileOutput(Filename, Context.MODE_PRIVATE);
            file.write(string.getBytes());
            file.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    
    //读取应用程序文件夹文件
        private String LoadString(String  Filename){
        // Filename : 文件名
        // 返回值 : 正常打开状态返回读取到的文本,不正常状态返回0
        String str;
        try {
            FileInputStream filestream=this.openFileInput(Filename);
            int filelength=filestream.available();
            byte[] text_byte=new byte[filelength];
           	filestream.read(text_byte);
            filestream.close();
            str= new String(text_byte, StandardCharsets.UTF_8);
            return str;
        } catch (IOException e) {
            e.printStackTrace();
            return "0";
        }
    }

存储设备文件夹文件的读写

    //向手机存储设备保存文件
    private void SaveToDocument(String Filename,String Filepath,String string) {
    	// FileName : 文件名
    	// Filepath : 文件路径(已存在的文件夹) [ 格式:xxx/xxxx/,确保文件夹存在且以/结束,为空则保存在手机存储的根目录(storage/0/)]
    	//  string : 要保存的数据
        try {
            File file = new File(Environment.getExternalStorageDirectory()+"/"+Filepath, fileName);
            if (file.exists()) {
                file.delete();
            }
           	file.createNewFile();
            FileOutputStream outStream = new FileOutputStream(file);
            outStream.write(string.getBytes());
            outStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
	//读取手机存储设备的文件
    private String LoadFromDocument(String Filename,String Filepath) {
    	// FileName : 文件名
    	// Filepath : 文件路径(已存在的文件夹) [ 格式:xxx/xxxx/,确保文件夹存在且以/结束]
    	//  返回值 :  正常打开状态返回读取到的文本,不正常状态返回0
    	 String str;
        try {
            File file = new File(Environment.getExternalStorageDirectory()+"/"+Filepath, fileName);
            filestream = new FileInputStream(file);
            int filelength =  filestream.available;
             byte[] text_byte = new byte[filelength];
             filestream.read(text_byte);
             filestream.close;
            str= new String(text_byte, StandardCharsets.UTF_8);
            return str;
        }  catch (IOException e) {
            e.printStackTrace();
            return "0";
        }
	}	

2019.07.12

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值