我有一个加密文件,在解密时会在临时内存中打开,当用户关闭文件时,他们会删除临时文件,实现此功能的方法是什么?
答案 0 :(得分:3)
您无法为该文件使用外部存储空间,因为它可供全世界使用(如果用户在删除之前弹出SD卡会怎样?)
您应该使用internal storage,以便在用户完成后将其删除。使用MODE_WORLD_READABLE
,以便用户/其他应用只能阅读它。用户完成后,您可以将其删除。
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
fos.write(string.getBytes());
fos.close();
File file = new File(FILENAME);
file.delete();
答案 1 :(得分:1)
良好做法
使用内部存储空间并查看:getCacheDir()
不良做法
在SD卡上创建文件
extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File file = new File(extStorageDirectory, "filename.ext");
try {
outStream = new FileOutputStream(file);
//write data;
outStream.flush();
outStream.close();
}
删除文件
extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File file = new File(extStorageDirectory, "filename.ext");
boolean deleted = file.delete();
答案 2 :(得分:0)
正如LAS_VEGAS所说使用外部存储是一个糟糕的想法!!
请参阅此链接以获取缓存getCacheDir()
http://developer.android.com/guide/topics/data/data-storage.html#InternalCache
或使用MODE_PRIVATE
即
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
然后在病房之后
deleteFile(FILENAME);
编辑:MODE_PRIVATE
会让其他应用无法访问它,所以也许不是一个好主意!:(
但是如果它必须解密文件并保存它未加密,如果有人真的想要那个文件他们可以得到它我确定,因为你有一段时间可读世界