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;
 }
}

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

(0)

相关推荐

  • Android 读写文件方法汇总

    一. 从resource中的raw文件夹中获取文件并读取数据(资源文件只能读不能写) 复制代码 代码如下: String res = "";try{InputStream in = getResources().openRawResource(R.raw.bbi);//在\Test\res\raw\bbi.txt,int length = in.available();byte [] buffer = new byte[length];in.read(buffer);//res = E

  • Android中文件读写(输入流和输出流)操作小结

    1. Android中文件读写的原理: (1).所有文件的储存都是字节的储存. (2).在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘. (3).在读取文件(特别是文本文件)时,也是一个字节一个字节的读取以形成字节序列. 2. 字节流和字符流的区别: (1).字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符流就可以. (2).字节流转换成字符流可以用InputStreamReader,OutputStreamWriter. 一般我们在

  • android 开发 文件读写应用案例分析

    一.基本概念 在Android应用中保存文件,保存的位置有两处 ①手机自带的存储空间,较小(如200M),适合保存一些小文件,Android中保存位置在data/data/应用包名/files目录 ②外存储设备如SD卡,较大,适合保存大文件如视频,Android中保存位置在mnt/sdcard目录,androd1.5,android1.6保存在sdcard目录 保存的位置通过android的file explorer视图可以找到 二.例子 复制代码 代码如下: /** * 文件操作类 * * @

  • Android手机内存中文件的读写方法小结

    本文实例总结了Android手机内存中文件的读写方法.分享给大家供大家参考.具体分析如下: 如何对手机内存中的文件数据进行读写呢? Context提供了领个方法来打开该应用程序的数据文件夹中的文件I/O流,具体如下: FileInputStream openFileInput(String name) 打开应用程序的数据文件夹下的name文件对应的数据流 FileOutputSream openFileOutput(String name, int mode) 打开应用程序数据文件夹下的name

  • 读写Android中assets目录下的文件的方法详解

    Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可: 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们.那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/r

  • android开发之Json文件的读写的示例代码

    Json格式是常见的读写形式.读写Json文件也是常用的操作. 这次来实践一下Json文件的读写. 首先在SD卡上的读写权限是一定要申请的.那么还是老办法,在 AndroidManifest.xml 文件中添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 这在android 6.0 以下的系统就足够了.6.0及以上的更新的系统,在代码中需要申请SD卡的读写权限. 先

  • Android日志文件的读写工具类

    本文实例为大家分享了Android日志文件的读写工具类,供大家参考,具体内容如下 1. UI 效果 例如我们需要采集温度信息,可以不断写入一行一行的txt文本,读写文件操作即可 2. 调用示例 2.1 需要配置SD卡读写权限 <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17" /> <!-- 往sdcard中写入数据的权限 --> <uses-permis

  • Android编程之文件的读写实例详解

    本文实例分析了Android编程之文件的读写方法.分享给大家供大家参考,具体如下: Android的文件读写与JavaSE的文件读写相同,都是使用IO流.而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写. 1.创建一个Android工程 Project name:File     BuildTarget:Android2.2     Application name:文件读写     Package name:test.file     Cre

  • Android应用程序中读写txt文本文件的基本方法讲解

    最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layou

  • Android如何读写CSV文件方法示例

    前言 本文主要给大家介绍的是关于Android读写CSV文件的相关内容,CSV也就是Comma-Separated Values逗号分隔的文本文件, 读写csv文件和读写普通文件类似:写的时候给数据之间添加上逗号. 设定存储路径和文件名: private static final String FILE_FOLDER = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "AboutVie

随机推荐