Java8 语法 整理桌面的小工具

252 阅读1分钟

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\

注: 只会扫描一层目录。

效果

image.png

制作成 bat 发送快捷方式到桌面上

@echo off
java DesktopCleanUtil C:\Users\sweet\Desktop\
@pause