文件获取copy迁移重命名删除

/**
 * 
 */
package jp.co.jip.aiocr.batch.Y0101;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;


/**
 * @author PC-209
 *
 */
public class file {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<File> allFile;
		try {
			allFile = getAllFileSpace("/data/r",
					"/data/rb", "0001");
			for (File file : allFile) {
				System.out.println(file);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 获取指定文件夹下所有文件,不含文件夹里的文件
	 * 
	 * @param kinCode
	 *
	 * @param dirFile
	 *            文件夹
	 * @return
	 * @throws IOException
	 */
	public static List<File> getAllFileSpace(String downPath, String workPath,
			String kinCode) throws IOException {
		File dirFile = new File(downPath);
		// 如果文件夹不存在或着不是文件夹,则返回 null
		if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) {
			return null;
		}
		File[] childrenFiles = dirFile.listFiles();
		if (Objects.isNull(childrenFiles) || childrenFiles.length == 0) {
			return null;
		}
		List<File> files = new ArrayList<>();
		for (File childFile : childrenFiles) {
			// 如果是文件,直接添加到结果集合
			if (childFile.isFile() && childFile.getName().endsWith(".pdf")) {
				files.add(childFile);
			}
		}
		if (files != null && files.size() != 0) {
			BasicFileAttributes attr = null;
			Path path = files.get(files.size() - 1).toPath();
			attr = Files.readAttributes(path, BasicFileAttributes.class);
			// 创建时间
			Instant instant = attr.creationTime().toInstant();
			String format = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")
					.withZone(ZoneId.systemDefault()).format(instant);
			System.out.println("scurrtest = " + format);
			// //创建单个目录,只有在 D:/AAA/BBB/CCC 存在的情况下才会创建 DDD
			File workFile = new File(workPath.concat("/").concat(kinCode)
					.concat("/").concat(format).concat("1"));

			if (workFile.mkdir()) {
				System.out
						.println("单文件夹 DDD 创建成功!创建后的文件目录为:"
								+ workFile.getPath() + ",上级文件为:"
								+ workFile.getParent());
				for (int i = 1; i <= files.size(); i++) {
					File file = files.get(i - 1);
					File newPath = new File(workFile.getPath().concat("/")
							.concat(file.getName()));
					File newNamePath = new File(workFile.getPath().concat("/")
							.concat(format).concat(String.valueOf(i))
							.concat(".pdf"));
					Files.copy(file.toPath(), newPath.toPath());
					if (newPath.exists()) {
						newPath.renameTo(newNamePath);
					} else {
						return null;
					}
				}
				File workFileList = new File(workPath.concat("/")
						.concat(kinCode).concat("/F.list"));
				if (!workFileList.exists() && !workFileList.isFile()) {
					workFileList.createNewFile();
				}
				BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(workFileList,true));
				bufferedWriter.write(workFile.getPath().concat("\r\n"));
				bufferedWriter.close();
				for (File delFile : childrenFiles) {
					boolean deleted = deleteFile(delFile);
					   System.out.println(deleted);
				}
			} else {
				return null;
			}

		} else {
			return null;
		}
		return files;
	}
	
	public static List<File> getAllFileRow(String downPath, String workPath,
			String kinCode) throws IOException {
		File dirFile = new File(downPath);
		// 如果文件夹不存在或着不是文件夹,则返回 null
		if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) {
			return null;
		}
		File[] childrenFiles = dirFile.listFiles();
		if (Objects.isNull(childrenFiles) || childrenFiles.length == 0) {
			return null;
		}
		List<File> files = new ArrayList<>();
		for (int i = 1; i <= childrenFiles.length; i++ ) {
			File childFile =childrenFiles[i-1];
			// 如果是文件,直接添加到结果集合
			if (childFile.isFile() && childFile.getName().endsWith(".pdf")) {
				files.add(childFile);
				BasicFileAttributes attr = null;
				Path path = childFile.toPath();
				attr = Files.readAttributes(path, BasicFileAttributes.class);
				// 创建时间
				Instant instant = attr.creationTime().toInstant();
				String format = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")
						.withZone(ZoneId.systemDefault()).format(instant);
				System.out.println("scurrtest = " + format);
				// //创建单个目录,只有在 D:/AAA/BBB/CCC 存在的情况下才会创建 DDD
				File workFile = new File(workPath.concat("/").concat(kinCode)
						.concat("/").concat(format).concat(String.valueOf(i-1)));

				if (workFile.mkdir()) {
					System.out
							.println("单文件夹 DDD 创建成功!创建后的文件目录为:"
									+ workFile.getPath() + ",上级文件为:"
									+ workFile.getParent());
					
						File file = childFile;
						File newPath = new File(workFile.getPath().concat("/")
								.concat(file.getName()));
						File newNamePath = new File(workFile.getPath().concat("/")
								.concat(format).concat(String.valueOf(i-1)).concat("1")
								.concat(".pdf"));
						Files.copy(file.toPath(), newPath.toPath());
						if (newPath.exists()) {
							newPath.renameTo(newNamePath);
						} else {
							return null;
						}
					
					File workFileList = new File(workPath.concat("/")
							.concat(kinCode).concat("/Y0101_PDF.list"));
					if (!workFileList.exists() && !workFileList.isFile()) {
						workFileList.createNewFile();
					}
					BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(workFileList,true));
					bufferedWriter.write(workFile.getPath().concat("\r\n"));
					bufferedWriter.close();
				} else {
					return null;
				}
			}
		}
		for (File delFile : childrenFiles) {
			boolean deleted = deleteFile(delFile);
			   System.out.println(deleted);
		}
		return files;
	}
	
	public static Boolean deleteFile(File file) {
		// 判断文件不为null或文件目录存在
		if (file == null || !file.exists()) {
			return false;
		}
//		// 判断子目录是否存在子目录,如果是文件则删除
//		if (file.isDirectory()) {
//			// 获取目录下子文件
//			File[] files = file.listFiles();
//			// 遍历该目录下的文件对象
//			for (File f : files) {
//				// 递归删除目录下的文件
//				deleteFile(f);
//			}
//			file.delete();
//			System.out.println("目录名:" + file.getName());
//		} else {
//			// 文件夹删除
//			file.delete();
//			System.out.println("文件名:" + file.getName());
//		}
		
		
		// 判断子目录是否存在子目录,如果是文件则删除
		File[] files = file.listFiles();
		if (!Objects.isNull(files)) {
					// 获取目录下子文件
					// 遍历该目录下的文件对象
					for (File f : files) {
						// 递归删除目录下的文件
						deleteFile(f);
					}
					file.delete();
					System.out.println("目录名:" + file.getName());
				} else {
					// 文件夹删除
					file.delete();
					System.out.println("文件名:" + file.getName());
				}
		return true;
	}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值