【发布时间】:2017-06-13 21:15:28
【问题描述】:
我有一个程序应该将整个文件夹(带有子文件夹)中的所有文件重命名为临时文件名,将它们复制到不同的目录,然后将临时文件名更改回原始文件名。在此过程中,我想保持所有文件夹名称相同。当我运行下面的代码时,它所做的只是更改我指定的路径中顶级文件夹的名称:
package shortenFilenames;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class shortenFilenameClass
{
public static void main(String[] args) throws IOException
{
String absolutePathLocal = "C:\\Users\\talain\\Desktop\\marketingOriginal"; //original files
String absolutePathOnedrive= "C:\\Users\\talain\\Desktop\\fakeOnedrive"; //path to onedrive
File local = new File(absolutePathLocal);
File onedrive = new File(absolutePathOnedrive);
File[] filesInDir = local.listFiles();
for(int i = 0; i < filesInDir.length; i++)
{
String name = filesInDir[i].getName();
System.out.println(name);
String newName = String.valueOf(i);
File oldPath = new File(absolutePathLocal + "\\" + newName);
System.out.println("oldPath: " + oldPath);
filesInDir[i].renameTo(new File(oldPath.toString()));
File newPath = new File(absolutePathOnedrive + "\\" + newName);
copyFileUsingJava7Files(oldPath, newPath);
newPath.renameTo(new File(newPath.toString()));
System.out.println("renamed: " + name + "to: " + newName + ", copied to one drive, and changed back to original name");
}
}
private static void copyFileUsingJava7Files(File source, File dest) throws IOException {
Files.copy(source.toPath(), dest.toPath());
}
}
【问题讨论】:
-
为什么要在复制时更改临时文件的名称,然后将名称更改回原始名称...为什么不简单地将本地路径中的所有文件复制到一个驱动器路径不改名字?
-
因为我尝试复制的某些文件的文件名太长,而文件资源管理器不允许我复制它们。
-
我从来没有听说过因为名字太长而阻止复制的文件浏览器!!!!那是什么文件资源管理器?为什么不允许他们?尝试复制它们时收到什么错误消息?
-
File oldPath = new File(absolutePathLocal + "\\" + newName); 其中 newName 实际上是 String newName = String。 valueOf(i);,表示您未能提供文件的格式。你可能也想看看这件事