安卓中如果用SharedPreference
进行存储数据,该共享数据每次都会被重写,如果想进行数据存储又不想使用数据库,可以利用该方式进行存储数据,FileWriter fw = new FileWriter(file,true)
中第二个参数如果是false
,则每次写都会覆盖原来的数据,true
则每次写都会接着前一次写的数据,不会被覆盖。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
/**
* @author wunu
*/
public class FileUtil {
/**
* 把字符串保存到指定路径的文本文件
* @param path
* @param txt
*/
public static void saveText(String path, String txt) {
try {
File file = new File(path);
// 根据指定文件路径构建文件输出流对象
FileWriter fw = new FileWriter(file,true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(txt);
bw.newLine();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从指定路径的文本文件中读取内容字符串
* @param path
* @return
*/
public static ArrayList<String> openText(String path) {
// 创建 ArrayList<String> 集合保存文本数据
ArrayList<String> list = new ArrayList<>();
try {
File file = new File(path);
// 根据指定文件路径构建文件输入流对象
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
// 定义字符串,保存的读取的一行文字
String line = null;
while ((line = br.readLine()) != null){
list.add(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
安卓存储可分为内部存储和外部存储,像我们的新建的 SharedPreference 和 数据库都存在内存中,一般内存有限,不要所有文件都往里面塞,这时我们可以进行外部存储。
其中外部存储又分为:公共文件Public files
和私有文件Private files
。
其中Public files
文件是可以被自由访问,且文件的数据对其他应用或者用户来说都是由意义的,当应用被卸载之后,其卸载前创建的文件仍然保留。比如camera应用,生成的照片大家都能访问,而且camera不在了,照片仍然在。如果你想在外存储上放公共文件你可以使用getExternalStoragePublicDirectory()
获取path路径。
Private files
文件,Google官方建议我们App的数据应该存储在外部存储的私有目录中该App的包名下,这样当用户卸载掉App之后,相关的数据会一并删除。可以使用getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/"
获取当前App的私有外部存储。