Я думаю, у вас есть 2 проблемы:
- Вы хотите хранить файлы в другом каталоге, код перемещает файлы (
renameTo(..)
) - Вы запускаете "«цикл перемещения» внутри цикла, который запускает все файлы (вы пытаетесь их переместить много раз)
Я немного очистил ваш код и удалил лишний цикл.Также обратите внимание, что до перемещение файлов не копирование файлов (я добавляю метод копирования ниже):
public static void main(String[] args)
{
String source = "c:/File";
String target = "c:/Target";
// get the files in the source directory and sort it
File sourceDir = new File(source);
File[] files = sourceDir.listFiles();
Arrays.sort(files, new Comparator<File>() {
public int compare(File f1, File f2) {
return (int) (f1.lastModified() - f2.lastModified());
}
});
// create the target directory
File targetDir = new File(target);
targetDir.mkdirs();
// copy the files
for(int i=0, length=Math.min(files.length, 10); i<length; i++)
files[i].renameTo(new File(targetDir, files[i].getName()));
}
Этот метод копирует файлы:
private void copyFile(File from, File to) throws IOException,
FileNotFoundException {
FileChannel sc = null;
FileChannel dc = null;
try {
to.createNewFile();
sc = new FileInputStream(from).getChannel();
dc = new FileOutputStream(to).getChannel();
long pos = 0;
long total = sc.size();
while (pos < total)
pos += dc.transferFrom(sc, pos, total - pos);
} finally {
if (sc != null)
sc.close();
if (dc != null)
dc.close();
}
}