最近写项目用到了文件存储,当需要频繁的存储操作的时候,文件存储性能方面远大于SharedPreferences 。
工具类复制可用
public class FileUtils {
// 将字符串写入到文本文件中
public static void writeTxtToFile(String strcontent, String filePath, String fileName) {
//生成文件夹之后,再生成文件,不然会出错
makeFilePath(filePath, fileName);
String strFilePath = filePath + fileName;
// 每次写入时,都换行写
String strContent = strcontent + "\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) {
ToastUtils.show("请检查存储权限");
}
}
//生成文件
public 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 void makeRootDirectory(String filePath) {
File file = null;
try {
file = new File(filePath);
if (!file.exists()) {
file.mkdir();
}
} catch (Exception e) {
Log.i("error:", e + "");
}
}
//读取指定目录下的所有TXT文件的文件内容
public static String getFileContent(File file) {
String content = "";
if (!file.isDirectory()) {
//检查此路径名的文件是否是一个目录(文件夹)
if (file.getName().endsWith("txt")) {
//文件格式为""文件
try {
InputStream instream = new FileInputStream(file);
if (instream != null) {
InputStreamReader inputreader
= new InputStreamReader(instream, "UTF-8");
BufferedReader buffreader = new BufferedReader(inputreader);
String line = "";
//分行读取
while ((line = buffreader.readLine()) != null) {
content += line + "";
}
instream.close();//关闭输入流
}
} catch (java.io.FileNotFoundException e) {
Log.d("TestFile", "The File doesn't not exist.");
} catch (IOException e) {
Log.d("TestFile", e.getMessage());
}
}
}
return content;
}
public static void DeleteFile(String path) {
File file = new File(path);
if (file.exists()) {
file.deleteOnExit();
}
}
public static void updateText(String strcontent, String filePath, String fileName) {
makeFilePath(filePath, fileName);
String strFilePath = filePath + fileName;
String strContent = strcontent;
try {
File file = new File(strFilePath);
if (!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
}
//写入的txt文档的路径
PrintWriter pw = new PrintWriter(strFilePath);
//写入的内容
pw.write(strContent);
pw.flush();
pw.close();
} catch (Exception e) {
ToastUtils.show("请检查存储权限");
}
}
/** * 读取changedata请求的id * @return 请求的id */
public static String getXctId() {
String id = getFileContent(new File("/sdcard/xct/id.txt"));
return TextUtils.isEmpty(id) ? "0" : id;
}
/** * 保存changedata的id * @param id */
public static void saveId(String id) {
updateText(id, "/sdcard/xct/", "id.txt");
}
/** * 保存广告 * @param advertStr */
public static void saveAdvert(String advertStr){
updateText(advertStr, "/sdcard/xct/", "advert.txt");
}
/** * 读取广告数据 * @return */
public static String getAdvert() {
String advert = getFileContent(new File("/sdcard/xct/advert.txt"));
return advert==null? "":advert;
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2813.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...