Android读写文件工具类详解

发布时间:2020-08-22 02:08:13 作者:lyl0530
来源:脚本之家 阅读:179

本文实例为大家分享了Android读写文件工具类的具体代码,供大家参考,具体内容如下

public class Utils {
  private static String path2 = Environment.getExternalStorageDirectory().getAbsolutePath();
  private static String path3 = Environment.getDownloadCacheDirectory().getAbsolutePath();
  private static String pathExt = "/111/222/333/444/555/";
  private static String fileName = "6.txt";
 
  public static void write(String str) {
    String filePath = null;
    boolean hasSDCard =Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
    if (hasSDCard) {
      filePath = path2 + pathExt + fileName;
    } else {
      filePath = path3 + pathExt + fileName;
    }
    try {
      File file = new File(filePath);
      if (!file.exists()) {
        //mkdirs()方法生成多层文件夹
        //mkdir()方法生成一层层文件夹
//        File dir = new File(file.getParent());
//        dir.mkdirs();
        file.getParentFile().mkdirs();//生成文件外层的文件夹
        file.createNewFile();//生成文件
      }
      FileOutputStream os = new FileOutputStream(file);
      os.write(str.getBytes());
      os.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  public static String read() {
    String content = "";
    String filePath;
 
    boolean sdcard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
    if (sdcard) {
      filePath = path2 + pathExt + fileName;
    } else {
      filePath = path3 + pathExt + fileName;
    }
    try {
      File file = new File(filePath);
      if (file.exists()) {
        FileInputStream is = new FileInputStream(file);
        InputStreamReader inputReader = new InputStreamReader(is);//设置流读取方式
        BufferedReader buffReader = new BufferedReader(inputReader);
        String line;
        try {
          while (null != (line = buffReader.readLine())) {
            content += line + "\n";//读取的文件容
          }
          is.close();//关闭输入流
        } catch (IOException e) {
          e.printStackTrace();
        } finally {
          try {
            if (null != is) {
              is.close();
            }
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    return content;
  }
}

1. 清单文件中添加读写权限

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

2.Android6.0以上版本要动态申请读写权限

ArrayList<String> permissionList = new ArrayList<>();
private String[] permissions = {
 "android.permission.READ_EXTERNAL_STORAGE",
 "android.permission.WRITE_EXTERNAL_STORAGE" };
//检测是否有写的权限
//判断手机版本,如果低于6.0 则不用申请权限,直接拍照
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
 if (checkSelfPermission(permissions[0]) != PackageManager.PERMISSION_GRANTED) {
 permissionList.add(permissions[0]);
 }
 if (checkSelfPermission(permissions[1]) != PackageManager.PERMISSION_GRANTED) {
 permissionList.add(permissions[1]);
 }
 
 if (!permissionList.isEmpty()) {
 String[] permissions1 = permissionList.toArray(new String[permissionList.size()]);
 requestPermissions(permissions1, 1);
 } else {
 Utils.write("balabala");
 Utils.read();
 }
} else {
 Utils.write("balabala");
 Utils.read();
}
 
 
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 switch (requestCode){
 case 1:
  if (PackageManager.PERMISSION_GRANTED == grantResults[0]){
  Utils.write("balabala");
  Utils.read();
  } else {
  Log.d(TAG, "fail: ");
  }
  break;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

推荐阅读:
  1. 集合工具类Collections代码详解
  2. 详解nodeJS中读写文件方法的区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android 读写文件 工具类

上一篇:详解Docker容器跨主机通信的方法

下一篇:Mac 安装 nodejs方法(图文详细步骤)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》