你不能讓編譯器忽略大小寫;這是一個文件系統的特點。請注意,NTFS不區分大小寫,但仍然保留個案。
使用Java 7,您可以使用DirectoryStream.Filter<Path>
收集相關路徑;然後重命名如果合適的話:
final DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>()
{
@Override
public boolean accept(final Path entry)
{
return Files.isRegularFile(entry)
&& entry.getFileName().toString().toLowerCase().endsWith(".jpg");
}
};
final List<Path> collected = new ArrayList<Path>();
try (
final DirectoryStream<Path> entries = Files.newDirectoryStream(dir, filter);
) {
for (final Path entry: entries)
collected.add(entry);
}
Path dst;
String targetName;
for (final Path src: collected) {
targetName = src.getFileName().toString().toLowerCase();
dst = src.resolveSibling(targetName);
if (!Files.isSameFile(src, dst))
Files.move(src, dst, StandardCopyOption.ATOMIC_MOVE);
}
與Java 8可能會使用Files.walk()
和lambda表達式來代替。
來源
2014-04-16 11:41:29
fge
製作一個將所有文件重命名爲相同(即小寫)的腳本。這是一個聰明的解決方案。 – Kayaman