@@ -400,32 +400,38 @@ public static void moveFileWithMD5Check(final File sourceFile, final File target
400400
401401 private static void moveFile (File sourceFile , File targetDir ) throws IOException {
402402 String sourceFileName = sourceFile .getName ();
403- final File existsFile = new File (targetDir , sourceFileName );
404- try (final FileInputStream is1 = new FileInputStream (sourceFile );
405- final FileInputStream is2 = new FileInputStream (existsFile ); ) {
406- long sourceFileSize = is1 .getChannel ().size ();
407- long exitsFileSize = is2 .getChannel ().size ();
408- if (sourceFileSize != exitsFileSize ) {
409- File file = renameWithSize (sourceFile , sourceFileSize , targetDir );
410- if (!file .exists ()) {
411- moveFileRename (sourceFile , file );
412- return ;
413- }
414- }
403+ final File exitsFile = new File (targetDir , sourceFileName );
415404
416- String sourceFileMD5 = DigestUtils .md5Hex (is1 );
417- String existsFileMD5 = DigestUtils .md5Hex (is2 );
405+ // First check file sizes
406+ long sourceFileSize = sourceFile .length ();
407+ long existsFileSize = exitsFile .length ();
418408
419- if (sourceFileMD5 .equals (existsFileMD5 )) {
420- org .apache .commons .io .FileUtils .forceDelete (sourceFile );
421- LOGGER .info (
422- "Deleted the file {} because it already exists in the target directory: {}" ,
423- sourceFile .getName (),
424- targetDir .getAbsolutePath ());
425- } else {
426- File file = renameWithMD5 (sourceFile , sourceFileMD5 , targetDir );
409+ if (sourceFileSize != existsFileSize ) {
410+ File file = renameWithSize (sourceFile , sourceFileSize , targetDir );
411+ if (!file .exists ()) {
427412 moveFileRename (sourceFile , file );
428413 }
414+ return ;
415+ }
416+
417+ // If sizes are equal, check MD5
418+ String sourceFileMD5 ;
419+ String existsFileMD5 ;
420+ try (final FileInputStream is1 = new FileInputStream (sourceFile );
421+ final FileInputStream is2 = new FileInputStream (exitsFile ); ) {
422+ sourceFileMD5 = DigestUtils .md5Hex (is1 );
423+ existsFileMD5 = DigestUtils .md5Hex (is2 );
424+ }
425+
426+ if (sourceFileMD5 .equals (existsFileMD5 )) {
427+ org .apache .commons .io .FileUtils .forceDelete (sourceFile );
428+ LOGGER .info (
429+ "Deleted the file {} because it already exists in the target directory: {}" ,
430+ sourceFile .getName (),
431+ targetDir .getAbsolutePath ());
432+ } else {
433+ File file = renameWithMD5 (sourceFile , sourceFileMD5 , targetDir );
434+ moveFileRename (sourceFile , file );
429435 }
430436 }
431437
@@ -465,27 +471,35 @@ private static void copyFileWithMD5(final File sourceFile, final File targetDir)
465471 throws IOException {
466472 String sourceFileName = sourceFile .getName ();
467473 final File exitsFile = new File (targetDir , sourceFileName );
468- try (final FileInputStream is1 = new FileInputStream (sourceFile );
469- final FileInputStream is2 = new FileInputStream (exitsFile ); ) {
470- long sourceFileSize = is1 .getChannel ().size ();
471- long exitsFileSize = is2 .getChannel ().size ();
472- if (sourceFileSize != exitsFileSize ) {
473- File file = renameWithSize (sourceFile , sourceFileSize , targetDir );
474- if (!file .exists ()) {
475- copyFileRename (sourceFile , file );
476- return ;
477- }
478- }
479- String sourceFileMD5 = DigestUtils .md5Hex (is1 );
480- String exitsFileMD5 = DigestUtils .md5Hex (is2 );
481- if (sourceFileMD5 .equals (exitsFileMD5 )) {
482- return ;
483- }
484474
485- File file = renameWithMD5 (sourceFile , sourceFileMD5 , targetDir );
475+ // First check file sizes
476+ long sourceFileSize = sourceFile .length ();
477+ long exitsFileSize = exitsFile .length ();
478+
479+ if (sourceFileSize != exitsFileSize ) {
480+ File file = renameWithSize (sourceFile , sourceFileSize , targetDir );
486481 if (!file .exists ()) {
487482 copyFileRename (sourceFile , file );
488483 }
484+ return ;
485+ }
486+
487+ // If sizes are equal, check MD5
488+ String sourceFileMD5 ;
489+ String exitsFileMD5 ;
490+ try (final FileInputStream is1 = new FileInputStream (sourceFile );
491+ final FileInputStream is2 = new FileInputStream (exitsFile ); ) {
492+ sourceFileMD5 = DigestUtils .md5Hex (is1 );
493+ exitsFileMD5 = DigestUtils .md5Hex (is2 );
494+ }
495+
496+ if (sourceFileMD5 .equals (exitsFileMD5 )) {
497+ return ;
498+ }
499+
500+ File file = renameWithMD5 (sourceFile , sourceFileMD5 , targetDir );
501+ if (!file .exists ()) {
502+ copyFileRename (sourceFile , file );
489503 }
490504 }
491505
0 commit comments