DesktopCleanUtil.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
public class DesktopCleanUtil {
public static void main(String[] args) throws IOException{
if (args.length > 1) {
System.out.println("----------- START -----------");
String path = "C:\\Users\\sweet\\Desktop\\";
Files.walk(Paths.get(path), 1)
.parallel()
.filter(path1 -> !Files.isDirectory(path1))
.filter(path1 -> !path1.toString().endsWith("lnk") && !path1.toString().endsWith("ini"))
.map(Path::toString)
.map(DesktopCleanUtil::getType)
.collect(Collectors.toSet())
.parallelStream()
.forEach(path2 -> {
try {
Path path1 = Paths.get(path + path2);
if (!Files.exists(path1))
Files.createDirectory(Paths.get(path + path2));
} catch (IOException e) {
e.printStackTrace();
}
});
Files.walk(Paths.get(path), 1)
.parallel()
.filter(path1 -> !Files.isDirectory(path1))
.filter(path1 -> !path1.toString().endsWith("lnk") && !path1.toString().endsWith("ini"))
.map(Path::getFileName)
.map(Path::toString)
.forEach(path1 -> {
String movePathStr = path + getType(path1) + "\\";
Path movePath = Paths.get(movePathStr);
if (Files.exists(movePath) && Files.isDirectory(movePath)) {
try {
System.out.println("source: " + path + path1);
System.out.println("target: " + movePathStr + path1);
System.out.println();
Files.move(Paths.get(path + path1), Paths.get(movePathStr + path1));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
} else {
System.out.println(movePathStr);
}
});
System.out.println("----------- OK -----------");
} else {
System.out.println("--------------------- No Path -------------------------");
}
}
public static String getType(String name) {
int i = name.lastIndexOf(".");
return name.substring(i+1, name.length());
}
}
使用
javac DesktopCleanUtil.java
java DesktopCleanUtil C:\Users\sweet\Desktop\
注: 只会扫描一层目录。
效果

制作成 bat 发送快捷方式到桌面上
@echo off
java DesktopCleanUtil C:\Users\sweet\Desktop\
@pause