我需要将文件从用户SD卡上的一个位置移动到SD卡上的另一个位置
目前我正在使用File.renameTo
这样做e.g。从sdcard / test / one.txt到sdcard / test2 / two.txt
有些用户报告文件移动功能无效。
我看到了以下链接:
How to copy files from 'assets' folder to sdcard?
那么在SD卡上将文件从一个目录移动到另一个目录的最佳方法是什么?
答案 0 :(得分:3)
尝试使用这些代码进行复制并检查文件并删除原始文件。
private void backup(File sourceFile)
{
FileInputStream fis = null;
FileOutputStream fos = null;
FileChannel in = null;
FileChannel out = null;
try
{
File backupFile = new File(backupDirectory.getAbsolutePath() + seprator + sourceFile.getName());
backupFile.createNewFile();
fis = new FileInputStream(sourceFile);
fos = new FileOutputStream(backupFile);
in = fis.getChannel();
out = fos.getChannel();
long size = in.size();
in.transferTo(0, size, out);
}
catch (Throwable e)
{
e.printStackTrace();
}
finally
{
try
{
if (fis != null)
fis.close();
}
catch (Throwable ignore)
{}
try
{
if (fos != null)
fos.close();
}
catch (Throwable ignore)
{}
try
{
if (in != null && in.isOpen())
in.close();
}
catch (Throwable ignore)
{}
try
{
if (out != null && out.isOpen())
out.close();
}
catch (Throwable ignore)
{}
}
}
答案 1 :(得分:1)
为什么你不能使用rename
?
File sd=Environment.getExternalStorageDirectory();
// File (or directory) to be moved
String sourcePath="/.Images/"+imageTitle;
File file = new File(sd,sourcePath);
// Destination directory
boolean success = file.renameTo(new File(sd, imageTitle));
答案 2 :(得分:1)
我知道很久以前这个问题已得到解答,但我发现复制整个文件是一种苛刻的方法...... 如果有人需要,我会这样做:
static public boolean moveFile(String oldfilename, String newFolderPath, String newFilename) {
File folder = new File(newFolderPath);
if (!folder.exists())
folder.mkdirs();
File oldfile = new File(oldfilename);
File newFile = new File(newFolderPath, newFilename);
if (!newFile.exists())
try {
newFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return oldfile.renameTo(newFile);
}