复制代码代码如下:
แพ็คเกจ com.robin;
นำเข้า java.io.File;
นำเข้า java.io.FileInputStream;
นำเข้า java.io.FileWriter;
นำเข้า java.io.IOException;
นำเข้า java.text.SimpleDateFormat;
นำเข้า java.util.Date;
นำเข้า java.util.Properties;
FileCopy ระดับสาธารณะ {
// สตริงส่วนตัวคงที่ rootSourcePath = "D:/temp/test1/";
rootSourcePath สตริงคงที่ส่วนตัว;
สตริงคงที่ส่วนตัว rootTargetPath;
logFilePath สตริงคงที่ส่วนตัว;
messageStr สตริงส่วนตัวคงที่;
โมฆะคงที่สาธารณะ main (String args []) {
// ทดสอบ();
โหลดคอนฟิก();
writeLogLn("เริ่ม --------------------------------------");
copyDirectory (rootSourcePath, rootTargetPath);
SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd_HH:mm:ss");
วันที่ sourceFileDate = วันที่ใหม่ ();
สตริง sourceFileDateStr = sdf.format (sourceFileDate);
writeLogLn("เวลาสิ้นสุด:" + sourceFileDateStr + " --------------------------------------" );
writeLogLn("");
-
copyFile โมฆะคงที่ส่วนตัว (สตริง sourceFileStr, สตริง targetFileStr) {
ไฟล์ sourceFile = ไฟล์ใหม่ (sourceFileStr);
ไฟล์ targetFile = ไฟล์ใหม่ (targetFileStr);
// รับเวลาแก้ไขไฟล์ต้นฉบับ
SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd_HH:mm:ss");
ยาว sourceFileModifiedTime = sourceFile.lastModified();
วันที่ sourceFileDate = วันที่ใหม่ (sourceFileModifiedTime);
สตริง sourceFileDateStr = sdf.format (sourceFileDate);
// หากมีไฟล์เป้าหมายอยู่ ให้เปรียบเทียบเวลาแก้ไข
ถ้า (targetFile.exists()) {
ยาว targetFileModifiedTime = targetFile.lastModified();
วันที่ targetFileDate = วันที่ใหม่ (targetFileModifiedTime);
สตริง targetFileDateStr = sdf.format (targetFileDate);
ถ้า (targetFileModifiedTime >= sourceFileModifiedTime) {
messageStr = "ไม่สนใจ! SourceFileModifyTime:" + sourceFileDateStr
+ " TargetFileModifyTime:" + targetFileDateStr;
} อื่น {
// nioTransferCopy(sourceFile, targetFile);
systemCopy(sourceFileStr, targetFileStr);
messageStr = "Covere! SourceFileModifyTime: " + sourceFileDateStr
+ "TargetFileModifyTime:" + targetFileDateStr;
-
} อื่น {
// nioTransferCopy(sourceFile, targetFile);
systemCopy(sourceFileStr, targetFileStr);
messageStr = "สร้าง! SourceFileModifyTime: " + sourceFileDateStr;
-
messageStr += " | SouceFile: " + sourceFileStr + " | ไฟล์เป้าหมาย: "
+ เป้าหมาย FileStr;
เอาท์พุท (ข้อความStr);
writeLogLn(ข้อความStr);
-
copyDirectory โมฆะคงที่ส่วนตัว (สตริง sourceDirectoryPath,
สตริง targetDirectoryPath) {
// สร้างไดเร็กทอรีหากไม่มีอยู่
ไฟล์ targetDirectory = ไฟล์ใหม่ (targetDirectoryPath);
ถ้า (!targetDirectory.exists()) {
targetDirectory.mkdir();
messageStr = "สร้างไดเรกทอรี:" + targetDirectoryPath;
เอาท์พุท (ข้อความStr);
writeLogLn(ข้อความStr);
-
// รับไฟล์หรือไดเร็กทอรีทั้งหมดบนไดเร็กทอรีต้นทาง
ไฟล์ sourceDirectory = ไฟล์ใหม่ (sourceDirectoryPath);
ไฟล์ [] = sourceDirectory.listFiles ();
// ข้ามไฟล์คัดลอก
สำหรับ (int i = 0; i < files.length; i++) {
ชื่อไฟล์สตริง = ไฟล์ [i] .getName ();
สตริง targetFileStr = targetDirectoryPath + ชื่อไฟล์;
สตริง sourceFileStr = ไฟล์ [i] .toString ();
ถ้า (ไฟล์ [i] .isFile ()) {
copyFile(sourceFileStr, targetFileStr);
-
ถ้า (ไฟล์ [i] .isDirectory ()) {
targetFileStr = targetFileStr + "/";
copyDirectory(sourceFileStr, targetFileStr);
-
-
-
// โมฆะส่วนตัวคงที่ nioTransferCopy (แหล่งไฟล์, ไฟล์เป้าหมาย)
// พ่น IOException {
// FileChannel ใน = null;
// FileChannel ออก = null;
// FileInputStream inStream = null;
// FileOutputStream outStream = null;
// พยายาม {
// inStream = FileInputStream ใหม่ (ที่มา);
// outStream = FileOutputStream ใหม่ (เป้าหมาย);
// ใน = inStream.getChannel();
// ออก = outStream.getChannel();
// in.transferTo(0, in.size(), ออก);
// } จับ (IOException e) {
// e.printStackTrace();
// } ในที่สุด {
// inStream.close();
// in.close();
// outStream.close();
// out.close();
-
-
โมฆะคงที่ส่วนตัว systemCopy (สตริง sourceFileStr, สตริง targetFileStr) {
รันไทม์ รันไทม์ = Runtime.getRuntime();
sourceFileStr = sourceFileStr.replace("/", "//");
targetFileStr = targetFileStr.replace("/", "//");
พยายาม {
สตริง copyCmd = "cmd /c copy /y /"" + sourceFileStr + "/" /""
+ targetFileStr + "/"";
runtime.exec(copyCmd);
} จับ (IOException จ) {
e.printStackTrace();
-
-
โมฆะคงที่ส่วนตัว loadConfig () {
พยายาม {
FileInputStream inputFile = FileInputStream ใหม่ (
"config.properties");
คุณสมบัติ p = คุณสมบัติใหม่ ();
p.load(ไฟล์อินพุต);
rootSourcePath = p.getProperty("rootSourcePath");
rootTargetPath = p.getProperty("rootTargetPath");
logFilePath = p.getProperty("logFilePath");
rootSourcePath = สตริงใหม่ (rootSourcePath.getBytes("8859_1"), "GBK");
rootTargetPath = สตริงใหม่ (rootTargetPath.getBytes("8859_1"), "GBK");
logFilePath = สตริงใหม่ (logFilePath.getBytes ("8859_1"), "GBK");
outputln("SourcePath: " + rootSourcePath);
เอาต์พุต ("TargetPath:" + rootTargetPath);
outputln("logFilePath: " + logFilePath);
writeLogLn("SourcePath: " + rootSourcePath);
writeLogLn("TargetPath: " + rootTargetPath);
} จับ (IOException e1) {
e1.printStackTrace();
-
-
เอาท์พุทโมฆะคงที่ส่วนตัว (ข้อความสตริง) {
System.out.println (ข้อความ);
-
โมฆะคงที่สาธารณะ appendWrite (เนื้อหาสตริง) {
พยายาม {
ผู้เขียน FileWriter = FileWriter ใหม่ (logFilePath จริง);
นักเขียน. เขียน (เนื้อหา);
นักเขียน.ปิด();
} จับ (IOException จ) {
e.printStackTrace();
-
-
โมฆะคงที่ส่วนตัว writeLogLn (ข้อความสตริง) {
ผนวกเขียน(ข้อความ+"/r/n");
-
-