1. 程式人生 > 程式設計 >Android讀寫檔案工具類詳解

Android讀寫檔案工具類詳解

本文例項為大家分享了Android讀寫檔案工具類的具體程式碼,供大家參考,具體內容如下

public class Utils {
  private static String path1 = Environment.getExternalStorageDirectory().getAbsolutePath();
  private static String path2 = 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 = path1 + pathExt + fileName;
    } else {
      filePath = path2 + 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 = path1 + pathExt + fileName;
    } else {
      filePath = path2 + 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;
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。