Bootstrap

Java 实现备份 Windows 锁屏壁纸

Windows10 的锁屏壁纸还是挺好看的,不过这个壁纸文件藏得目录比较深,而且壁纸更新后就会自动删掉原来的壁纸文件。手动备份的话要逐个文件修改后缀名,这不符合懒人的作风,于是就基于 Java 实现了一键备份的功能。如果不想每次手动备份,还可以在 Windows 任务计划程序中以命令行方式定期运行编译后的文件以实现完全自动备份。

运行环境

操作系统:Windows 10

Java环境:JDK-17

具体代码

package demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 此类用于备份 Windows 锁屏壁纸
 */
public class WallpaperBackup {

	public static void main(String[] args) {
		String srcPath = "C:\\Users\\计算机用户名\\AppData\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\LocalState\\Assets";
		String destPath = "D:\\Wallpaper";
		backup(srcPath, destPath);
	}

	/**
	 * 备份 Windows 锁屏壁纸
	 * 
	 * @param srcPath  源目录
	 * @param destPath 备份目录
	 */
	public static void backup(String srcPath, String destPath) {
		File srcDir = new File(srcPath);
		if (!srcDir.exists()) {
			System.out.println("source path not exist.");
			return;
		}
		File destDir = new File(destPath);
		if (!destDir.exists()) {
			System.out.println("destination path not exist.");
			return;
		}

		long minLength = 100 * 1024;
		int index = destDir.listFiles().length;

		for (File srcFile : srcDir.listFiles()) {
			if (srcFile.isFile() && srcFile.length() > minLength) { // 过滤小于 100KB 的文件
				String destName = String.format("wallpaper_%04d.png", ++index);
				System.out.println(destName);
				File destFile = new File(destDir, destName);
				try (FileInputStream fis = new FileInputStream(srcFile);
						FileOutputStream fos = new FileOutputStream(destFile)) {
					byte[] b = fis.readAllBytes();
					fos.write(b);
					fos.flush();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}

}

;