android:在临时内存中打开文件的最佳方法

时间:2011-08-05 11:26:31

标签: android

我有一个加密文件,在解密时会在临时内存中打开,当用户关闭文件时,他们会删除临时文件,实现此功能的方法是什么?

3 个答案:

答案 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()


不良做法

  1. 在SD卡上创建文件

    extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    File file = new File(extStorageDirectory, "filename.ext");   
    try {
        outStream = new FileOutputStream(file);
        //write data;
        outStream.flush();
        outStream.close();
    }
    
  2. 删除文件

    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会让其他应用无法访问它,所以也许不是一个好主意!:(

但是如果它必须解密文件并保存它未加密,如果有人真的想要那个文件他们可以得到它我确定,因为你有一段时间可读世界