0

我正在尝试将文件移动 /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 不适用于在不同的文件系统中移动

请帮我

4

3 回答 3

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());

  }

  }

于 2013-02-02T10:30:52.397 回答
0

根据Android docs “两个路径必须在同一个挂载点上”,就像它只能在不同路径的情况下用于文件重命名一样。所以如果你想移动它,你可能应该复制它,然后重命名,然后删除源文件。
但是在这种情况下,您不仅要尝试将文件从一个 FS 移动到另一个 FS,而且还要尝试使用/mnt/extsd可能根本无法使用的文件。按照这个关于此类路径的问题。

于 2013-03-06T15:41:36.867 回答
0

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

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();
}

}

于 2013-02-02T10:47:20.027 回答