Java 复制目录-制定进度
我有一个例程,我已经使用了一段时间,将目录从SD卡复制到插入式USB驱动器。这是可行的,但因为可以有3000张照片,我相信你会觉得有点慢。所以我试图实现某种更新进度条 这是我进行复制的代码Java 复制目录-制定进度,java,android,backup,Java,Android,Backup,我有一个例程,我已经使用了一段时间,将目录从SD卡复制到插入式USB驱动器。这是可行的,但因为可以有3000张照片,我相信你会觉得有点慢。所以我试图实现某种更新进度条 这是我进行复制的代码 public void copyDirectory(File sourceLocation , File targetLocation) throws IOException { Log.e("Backup", "Starting backup");
public void copyDirectory(File sourceLocation , File targetLocation)
throws IOException {
Log.e("Backup", "Starting backup");
if (sourceLocation.isDirectory()) {
if (!targetLocation.exists() && !targetLocation.mkdirs()) {
throw new IOException("Cannot create dir " + targetLocation.getAbsolutePath());
}
String[] children = sourceLocation.list();
for (int i=0; i<children.length; i++) {
copyDirectory(new File(sourceLocation, children[i]),
new File(targetLocation, children[i]));
}
} else {
Log.e("Backup", "Creating backup directory");
File directory = targetLocation.getParentFile();
if (directory != null && !directory.exists() && !directory.mkdirs()) {
throw new IOException("Cannot create dir " + directory.getAbsolutePath());
}
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
Log.e("Backup", "Finished");
}
}
但我猜,我不知道如何把A和B组合在一起。我不知道如何在更新的正确位置增加。-我可能走错了路!任何提示都将不胜感激。
参见上面的链接异步任务加载概念将帮助您您是否也在复制子目录?是的,所有子目录。它本质上是一个工作备份,可能还需要对子目录中的文件进行计数(递归countFilesInDirectory调用if(file.isDir())您好-我已经在后台的异步任务中运行了它,并在备份前后更新了通知区域。但这正是我想添加进度条的地方。因此,我正在尝试解决当前步骤无忧:-)我很感激在计算照片时输入的信息,它需要显示进度条中的百分比?是的,基本上是给正在备份的用户一个指示,表明它实际上仍在工作。等待40分钟,而它只是说跑步还不够好
public static int CountFilesInDirectory(String location) {
File f = new File(location);
int count = 0;
for (File file : f.listFiles()) {
if (file.isFile()) {
count++;
}
}
return count;
}