Android系统主要提供了3种方式,提供数据持久化存储
- 文件存储
- sharedpreference存储
- 数据库存储
文件存储
不对数据进行任何格式化处理,适合存储一些简单的文本数据或二进制数据。
第一步:创建文件管理类
public class FileUtils {
/**
* 保存数据到文件
*
* @param context 上下文
* @param fileName 要存储的文件名
* @param mode 文件的操作模式例如Context.MODE_APPEND 如果文件不存在就创建,如果存在就在原来基础上追加新内容
* Context.MODE_PRIVATE如果文件不存在就创建,如果存在就覆盖
* @param datas 存储的数据
*/
public static void saveData2File(Context context, String fileName, int mode, String datas) {
FileOutputStream outputStream;
BufferedWriter writer = null;
try {
outputStream = context.openFileOutput(fileName, mode);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
writer = new BufferedWriter(outputStreamWriter);
writer.write(datas);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != writer) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 获取文件内容
*
* @param context 上下文
* @param fileName 文件名
* @return
*/
public static String getDataFromFile(Context context, String fileName) {
FileInputStream fileInputStream;
BufferedReader reader = null;
InputStreamReader inputStreamReader;
StringBuffer content = new StringBuffer();
try {
fileInputStream = context.openFileInput(fileName);
inputStreamReader = new InputStreamReader(fileInputStream);
reader = new BufferedReader(inputStreamReader);
String line = "";
if ((line = reader.readLine()) != null) {
content.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != reader) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String fileResult = content.toString();
Log.i("path", fileResult);
return fileResult;
}
/**
* 删除文件
*
* @param fileName 带文件路径的文件名
* @return
*/
public static boolean deletFile(String fileName) {
File file = new File(fileName);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
if (file.exists() && file.isFile()) {
if (file.delete()) {
return true;
} else {
return false;
}
} else {
return false;
}
}
/**
* 文件是否存在
*
* @param filePath 带完整文件路径的文件名称
* @return
*/
public static boolean isFileExists(String filePath) {
try {
File file = new File(filePath);
if (file.exists()) {
return true;
}
} catch (Exception e) {
return false;
}
return false;
}
/**
* 获取通过上面的saveData2File保存的文件路径
*
* @param context 上下文
* @return
*/
public static String getFilePath(Context context) {
String absolutePath = context.getFilesDir().getAbsolutePath();
Log.i("absolutePath", absolutePath);
return absolutePath;
}
}
第二步:使用
public class StorageActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_storage);
findViewById(R.id.saveData).setOnClickListener(this);
findViewById(R.id.getData).setOnClickListener(this);
findViewById(R.id.getFilePath).setOnClickListener(this);
findViewById(R.id.isFileExists).setOnClickListener(this);
findViewById(R.id.deleteFile).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.saveData:
FileUtils.saveData2File(this, "tomato.txt", Context.MODE_PRIVATE, "lalala");
break;
case R.id.getData:
FileUtils.getDataFromFile(this, "tomato.txt");
break;
case R.id.getFilePath:
FileUtils.getFilePath(this);
break;
case R.id.isFileExists:
String filePath = FileUtils.getFilePath(this);
FileUtils.isFileExists(filePath + "/tomato.txt");
break;
case R.id.deleteFile:
String filePath1 = FileUtils.getFilePath(this);
FileUtils.deletFile(filePath1+"/tomato.txt");
break;
}
}
}
网友评论