1 package file; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import org.apache.commons.lang3.StringUtils; 11 12 public class fileListAndMove { 13 14 public static void main(String[] args) { 15 String strPath = "D:\\文件\\手机app"; 16 String newPath = "D:/等等"; 17 List<File> filelist = new ArrayList<>(); 18 for (File f : getFileList(strPath, filelist)) { 19 System.out.println(f); 20 removeFile(f, strPath, newPath); 21 } 22 } 23 24 /** 25 * 获得文件列表 26 * @param strPath 27 * @param filelist 28 * @return 29 */ 30 public static List<File> getFileList(String strPath, List<File> filelist) { 31 File dir = new File(strPath); 32 File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组 33 if (files != null) { 34 for (int i = 0; i < files.length; i++) { 35 if (files[i].isDirectory()) { 36 getFileList(files[i].getAbsolutePath(), filelist); // 遍历子文件夹里面的东西 37 } else { 38 filelist.add(files[i]); 39 } 40 } 41 } 42 return filelist; 43 } 44 45 /** 46 * 文件移动 47 * @param f 48 * @param strPath 49 * @param newPath 50 */ 51 @SuppressWarnings("unused") 52 private static void removeFile(File f, String strPath, String newPath) { 53 // 定义移动后的文件路径 54 File bfile = new File( 55 StringUtils.join(newPath, "//", f.getAbsolutePath().toString().substring(strPath.length()))); 56 try { 57 if (!bfile.exists()) { 58 // 先得到文件的上级目录,并创建上级目录,在创建文件 59 bfile.getParentFile().mkdir(); 60 bfile.createNewFile(); 61 } 62 63 FileInputStream c = new FileInputStream(f); 64 FileOutputStream d = new FileOutputStream(bfile); 65 byte[] date = new byte[512];// 定义byte数组 66 int i = 0; 67 while ((i = c.read(date)) > 0) {// 判断是否读到文件末尾 68 d.write(date);// 写数据 69 } 70 c.close();// 关闭流 71 d.close();// 关闭流 72 // afile.delete();// 删除原文件 73 System.err.println("文件移动成功:" + bfile); 74 } catch (IOException e) { 75 e.printStackTrace(); 76 } 77 } 78 }