package com.hasonger.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class UPanAutoCopy { public static void main(String[] args) { copy(getUPanRootDir(), "E:/U盘拷贝"); System.out.println("备份数据成功!"); } /** * 获取U盘根路径 */ public static File getUPanRootDir() { File[] files = File.listRoots(); File[] filesPlus = null; while (true) { try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } filesPlus = File.listRoots(); if (filesPlus.length > files.length) { System.out.println("发现新U盘:" + filesPlus[filesPlus.length - 1].getAbsolutePath()); break; } } System.out.println("开始拷贝数据,请等待。。。。。。。。。。。"); return filesPlus[filesPlus.length - 1]; } /** * 将U盘所有数据拷贝到磁盘saveDirectory路径 */ public static void copy(File uPanRootDir, String saveDirectory) { if(uPanRootDir.isFile()) { FileInputStream in = null; FileOutputStream out = null; try { try { in = new FileInputStream(uPanRootDir); //数据拷贝目的地绝对路径 File dest = new File(saveDirectory, uPanRootDir.getAbsolutePath().substring(3)); //创建数据拷贝目的地的父路径 new File(dest.getParent()).mkdirs(); out = new FileOutputStream(dest); int len = 0; //一次缓冲读取5M数据 byte[] b = new byte[1024*1024*5]; while((len = in.read(b)) != -1) { out.write(b, 0, len); } out.flush(); System.out.println(dest.getAbsolutePath()); } finally { if(in != null) { in.close(); } if(out != null) { out.close(); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else if (uPanRootDir.isDirectory()){ File[] files = uPanRootDir.listFiles(); if(files == null) { return; } for (File file : files) { copy(file, saveDirectory); } } } }
关于我们
技术分享
技术分享
U盘数据自动备份
U盘数据自动备份
2021-06-01
- 标签:
-
技术分享
您可能感兴趣的新闻 换一批
热门文章
现在下载,可享30天免费试用