1
我有一個程序應該將整個文件夾(包含子文件夾)中的所有文件重命名爲臨時文件名,將這些文件複製到不同的目錄,然後將臨時文件名更改回到原始文件名。在此過程中,我想保留所有文件夾名稱相同。當我運行下面的代碼,它的作用是改變我指定的路徑中的頂層文件夾的名稱:複製目錄中的文件並更改文件名
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());
}
}
爲什麼要在複製時更改臨時文件的名稱然後將名稱更改回原來的名稱......爲什麼不直接將本地路徑中的所有文件複製到一個驅動器路徑而不更改名稱? –
由於我試圖複製的某些文件的文件名太長,並且文件資源管理器不允許我複製它們。 – Tom
我從來沒有聽說過一個文件瀏覽器,可以防止複製,因爲名稱很長!那是什麼文件瀏覽器?爲什麼它不允許他們?試圖複製它們時收到了什麼錯誤信息? – niceman