以前的代码拿过来总结,意外的就整成一个类了,不过倒也方便,我也不阐述了,就直接说怎么用吧
1.首先肯定是在AndroidManifest的文件里加写入SD卡的权限,代码如下:
<!--SD卡读写的权限--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.兴建一个类,我这边名字命名的是FileOperations
package cc.booku.owlbox.FileOperations;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import java.io.File;
import java.io.RandomAccessFile;
/**
* Created by yangwenlong on 2020/5/16.
*/
public class FileoOperations {
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"};
public static void verifyStoragePermissions(Activity activity) {
try {
//检测是否有写的权限
int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE");
if (permission != PackageManager.PERMISSION_GRANTED) {
// 没有写的权限,去申请写的权限,会弹出对话框
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void writeData(String url, String name, String content) {
String filePath = url;
String fileName = name + ".txt";
writeTxtToFile(content, filePath, fileName);
}
// 将字符串写入到文本文件中
private static void writeTxtToFile(String strcontent, String filePath, String fileName) {
//生成文件夹之后,再生成文件,不然会出错
makeFilePath(filePath, fileName);
String strFilePath = filePath + fileName;
// 每次写入时,都换行写
String strContent = strcontent + "\r\n";
try {
File file = new File(strFilePath);
if (!file.exists()) {
Log.d("TestFile", "Create the file:" + strFilePath);
file.getParentFile().mkdirs();
file.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(file, "rwd");
raf.seek(file.length());
raf.write(strContent.getBytes());
raf.close();
} catch (Exception e) {
Log.e("TestFile", "Error on write File:" + e);
}
}
//生成文件
private static File makeFilePath(String filePath, String fileName) {
File file = null;
makeRootDirectory(filePath);
try {
file = new File(filePath + fileName);
if (!file.exists()) {
file.createNewFile();
}
} catch (Exception e) {
e.printStackTrace();
}
return file;
}
//判断文件是否存在
public static boolean fileIsExists(String strFile) {
try {
File f = new File(strFile);
if (!f.exists()) {
return false;
}
} catch (Exception e) {
return false;
}
return true;
}
//生成文件夹
public static void makeRootDirectory(String filePath) {
File file = null;
try {
file = new File(filePath);
//不存在就新建
if (!file.exists()) {
file.mkdir();
}
} catch (Exception e) {
Log.i("error:", e + "");
}
}
}
3.在activity里面调用,我这边给个案例
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //申请SD卡读写的权限 FileoOperations.verifyStoragePermissions(MainActivity.this); //创建文件夹 FileoOperations.makeRootDirectory("/storage/emulated/0/OwlDatabase/"); //创建文件并写入数据 wtest(); }
//对应的函数
private void wtest() { //判断文件是否存在 if (!FileoOperations.fileIsExists("/storage/emulated/0/OwlDatabase/" + i + "name" + ".txt")){ //writeData(文件路径,文件名,要写入的字符串) FileoOperations.writeData("/storage/emulated/0/OwlDatabase/", i + "name", "添加Flag把状态栏设为可绘制模式"); } }
至此就写入完成了~