将视频文件从/ mnt / sdcard移动到/ mnt / extsd

时间:2013-02-02 10:20:28

标签: android filesystems android-sdcard file-move

我正在尝试将文件从/mnt/sdcard移至/mnt/extsd 拍摄视频后,当前文件存储在/mnt/sdcard/DCIM/camera 但现在我想将此文件移至/mnt/extsd

我正在使用以下代码

File fromFile=new File( "/mnt/sdcard/folderpath" ,"/video.mp4");
File toFile=new File("/mnt/extsd" ,fromFile.getName());
fromFile.renameTo(toFile);

我读到renameTo不适用于移动不同的文件系统

请帮帮我

3 个答案:

答案 0 :(得分:0)

 try {

java.io.FileInputStream fosfrom = new java.io.FileInputStream(fromFile);

java.io.FileOutputStream fosto = new FileOutputStream(toFile);

byte bt [] = new byte [1024];

int c;

while((c = fosfrom.read(bt))> 0){

fosto.write(bt,0,c); //将内容写到新文件当中

}

fosfrom.close();

fosto.close();

} catch(Exception ex){

Log.e(“readfile”,ex.getMessage());

}

}

答案 1 :(得分:0)

给源文件存在你要存储的ur文件和目标位置。

public static void copyDirectoryOneLocationToAnotherLocation(File sourceLocation, File targetLocation)
    throws IOException {

if (sourceLocation.isDirectory()) {
    if (!targetLocation.exists()) {
        targetLocation.mkdir();
    }

    String[] children = sourceLocation.list();
    for (int i = 0; i < sourceLocation.listFiles().length; i++) {

        copyDirectoryOneLocationToAnotherLocation(new File(sourceLocation, children[i]),
                new File(targetLocation, children[i]));
    }
} else {

    InputStream in = new FileInputStream(sourceLocation);

    OutputStream out = new FileOutputStream(targetLocation);

    // Copy the bits from instream to outstream
    byte[] buf = new byte[1024];
    int len;
    while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}

}

答案 2 :(得分:0)

according to Android docs “两个路径必须位于同一个挂载点上”,就像它只能在不同路径的情况下用于文件重命名一样。因此,如果您想移动它,您可能应该复制它,然后重命名然后删除源文件。
但是在这种情况下,您不仅要尝试将文件从一个FS移动到另一个FS,而且还尝试使用可能根本无法使用的/mnt/extsdFollow this question about such paths.