【问题标题】:Where should I store a file in Android?我应该在 Android 中的哪里存储文件?
【发布时间】:2012-10-11 01:56:41
【问题描述】:

我有一个创建配置文件和日志文件的应用程序。我将这些存储在外部存储中,但是当我在我的 android 模拟器中尝试它时它不起作用,因为外部存储不可写。如果发生这种情况,我应该将文件存储在哪里?

这是我的代码:

private void createConfigurationFile(){
    File ssConfigDirectory = 
        new File(Environment.getExternalStorageDirectory()+"/MyApp/config/");
    File file = new File(ssConfigDirectory, mUsername+".cfg");

    if(!file.exists()){
        try{
            String state = Environment.getExternalStorageState();
            if (!Environment.MEDIA_MOUNTED.equals(state)){
                ssConfigDirectory = new File("PATH_WHERE_I_SHOULD_STORE_IT");
            }
            File ssLogDirectory = new File(ssConfigDirectory+"/SweetSyncal/log/");
            ssLogDirectory.mkdirs();                
            ssConfigDirectory.mkdirs();

            File outputFile = new File(ssConfigDirectory, mUsername+".cfg");                
            FileOutputStream fOut = new FileOutputStream(outputFile);
            OutputStreamWriter osw = new OutputStreamWriter(fOut); 

            writeFile(osw);
            osw.flush();
            osw.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

【问题讨论】:

  • 您是否有权写入外部存储?
  • 在我的清单中我做了,但外部存储状态不是 MEDIA_MOUNTED,所以我不能在那里写。在我的真实设备中它工作正常。

标签: android file


【解决方案1】:

如果文件不是太大,您可以将其保存在设备的内部存储中。

要访问内部存储,您可以使用以下方法:

FileOutputStream openFileOutput (String name, int mode)

(您需要Context 的实例才能使用它)

例子:

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

至于你提供的代码为什么不起作用那么有两种可能:

  1. 您忘记添加所需的权限 (WRITE_EXTERNAL_STORAGE)。
  2. 您的模拟器没有启用 SD 卡。假设您使用的是 Eclipse,您可以在 AVD Manager 中启用它。只需编辑您的 AVD 实例并在相应字段中输入 SD 卡的大小。您还应该添加一个名为 SD Card Support 的硬件功能并将其设置为 TRUE。

官方开发者指南中有一篇很棒的文章,它将告诉您有关 Android 存储的所有信息。

您可以阅读它HERE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2022-11-09
    • 2018-10-28
    • 2015-02-21
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多