【问题标题】:Saving data on external storage将数据保存在外部存储上
【发布时间】:2011-08-06 23:36:26
【问题描述】:

我想在用户的外部目录(即SD卡)中保存一些数据,但似乎有一个奇怪的问题。我正在使用Environment.getExternalStorageDirectory(),它返回“mnt/sdcard/”(这很好)。我想在这个目录中创建两个文件夹,所以我这样做:

File main = new File(getExternalStorageDirectory() + "/my_app/some_data");
if(!main.isDirectory())
    main.mkdirs();

现在我以为这样会创建目录“mnt/sdcard/my_app/some_data”,但是使用文件管理器查看SD卡后,原来这个文件夹是在“mnt/sdcard/my_app/”创建的mnt/sdcard/my_app/some_data”,这很奇怪。谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: android file directory storage external


    【解决方案1】:

    试试下面的,看看你会得到什么......

    String packageName =  this.getPackageName();
    File myFilesDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator  + "Android" + File.separator + "data" + File.separator + packageName + File.separator + "files");
    myFilesDir.mkdirs();
    

    这正是我用来在 SD 卡上创建工作目录的方法。对我来说,它创造了......

    /mnt/sdcard/Android/data/com.mycompany.myApp/files
    

    ...其中 'com.mycompany.myApp' 是我的应用程序的实际包名。

    【讨论】:

    • 经过一些修改并添加您的代码后,我得到了它的工作,谢谢!
    • 嘿,你能在这里添加你的答案吗
    • 我认为'this'应该是Context 例如:context.getPackageName();
    • 是否总是可以假设使用“/”而不是 File.separator 是安全的?
    • @androiddeveloper:好点。由于文件系统基于 UNIX 样式,我会对所有当前(标准)版本的 Android 和所有当前设备(据我所知)说“是”。在说尽管有人可能将 Android 移植到使用不同文件分隔符的系统中,在这种情况下使用 File.separator 而不是 / 明确将使代码“面向未来”。
    猜你喜欢
    • 2012-03-13
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2011-12-14
    相关资源
    最近更新 更多