软件编程
位置:首页>> 软件编程>> Android编程>> Android读写文件工具类详解

Android读写文件工具类详解

作者:lyl0530  发布时间:2021-10-08 18:08:12 

标签: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;
}
}

来源:https://blog.csdn.net/lyl0530/article/details/104863777

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com