版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
背景
运营小姐姐小哥哥万众期待的智能系统终于经过在本地严格测试来到了测试环境,一个大幅提高生产力的时代即将开启。
BUT在这美好的时刻,在经过本地开发完美的的测试和验证,来到测试环境,结果却不那么美好了:与预期的结果有了偏差。
一套庞大的系统,经过各阶段的测试、排查、Log定位,最终锁定一段最不起眼的代码身上,一段非常简单的逻辑。
目前代码
import org.apache.commons.io.FilenameUtils;
import java.util.concurrent.TimeUnit;
import java.time.format.DateTimeFormatter;
import java.time.ZonedDateTime;
import java.io.File;
private static final DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
public static void renameImagesByDirectoryWithTime(String directory) throws IOException, InterruptedException {
try {
File[] files = new File(directory).listFiles();
for (File file : files) {
String name = ZonedDateTime.now().format(df);
TimeUnit.MILLISECONDS.sleep(10);
String extension = FilenameUtils.getExtension(file.getName());
file.renameTo(new File(directory, name + "." + extension));
}
} catch (Exception e) {
throw e;
}
}
期望功能
上述代码要实现逻辑: 传进来一个文件目录,期望将其中的每个文件按照上述格式全部进行重命名。
存在问题
上述代码存在的问题:都是同样的JDK8,在Windows环境表现完全正确, 在Linux(准确说是Cent os 6.5上)系统上 总是出现重命名后文件变少的问题,而且对于同一目录变少的数量每次运行并不固定。
期待您?
期待您留言给出指点和正确解答,笔者会将正确解答更新到博文中一并感谢,为后来读者指点迷津