将文件存储在可移动sd卡上



我在市场上有两个Android应用程序可以从sd卡读取/写入。其中一个将备份文件存储到存储卡上。问题在于,新款智能手机有两张存储卡;嵌入式的/mnt/sdcard和没有标准化目录路径的可移动的sdcard。我希望为用户添加一个带有两个选项的单选按钮组;将备份存储在内部存储卡上(默认)或存储在可移动存储卡上。这个难题是获取可移动存储卡的正确路径并将该路径存储在一个变量中。

我发现了一个linux命令,似乎在所有android设备上工作。"df"命令列出了嵌入式sd卡(/mnt/sdcard)和可移动sd卡的位置。我知道如何使用dataoutputstream类发送命令,但我卡住的地方是从命令的输出中读取并过滤我需要从输出的部分。

下面是"df"命令输出的示例:

/ $ df
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                   369128        32    369096   0% /dev
tmpfs                   369128         0    369128   0% /mnt/asec
tmpfs                   369128         0    369128   0% /mnt/obb
/dev/block/mmcblk0p1    516040    476832     39208  92% /system
/dev/block/mmcblk0p7  13813852   2948206  10865646  21% /data
/dev/block/mmcblk0p2    533616      8574    525042   2% /cache
tmpfs                   369128         0    369128   0% /Removable
/dev/fuse             13813852   2948206  10865646  21% /mnt/sdcard
/dev/block/vold/179:9 30306304  12222624  18083680  40% /Removable/MicroSD

上面的输出来自我的ASUS Transformer平板电脑,正如你所看到的,它使用路径/Removable/MicroSD作为可移动sd卡的目录。同样,我所需要做的就是在代码中获取这个输出,过滤掉所有不必要的数据,并将路径存储在一个变量中。

我不是在找人为我写代码,我只是需要找到更好的参考,任何类将允许我抓取输出并过滤它。

我认为你必须在sd卡或内存中创建自己的目录或文件夹。如下所示。

if (sdCardDir != null) 
        return (new File(sdCardDir, CALLHISTORY_FILE).exists());
    ArrayList<File> posibleDir = new ArrayList<File>();
    File esd = Environment.getExternalStorageDirectory();
    posibleDir.add(new File(esd, "external_sd"));
    posibleDir.add(esd);
    posibleDir.add(new File("/sdcard"));
    // Use first possible sdcard directory
    for (File dir : posibleDir) {
        if (dir.exists() && dir.isDirectory()) {
            sdCardDir = new File(dir, TBACKUP_DIR);
            if(!sdCardDir.exists())
                sdCardDir.mkdir();
            return true;
        }
    }
    throw new IOException();
}

最新更新