复制代码代码如下:
paquete com.robin;
importar java.io.File;
importar java.io.FileInputStream;
importar java.io.FileWriter;
importar java.io.IOException;
importar java.text.SimpleDateFormat;
importar java.util.Fecha;
importar java.util.Properties;
copia de archivo de clase pública {
// cadena estática privada rootSourcePath = "D:/temp/test1/";
Cadena estática privada rootSourcePath;
Cadena estática privada rootTargetPath;
logFilePath de cadena estática privada;
cadena estática privada messageStr;
público estático vacío principal (String args []) {
// prueba();
cargarConfig();
writeLogLn("Inicio----------------------------------------------");
copyDirectory(rootSourcePath, rootTargetPath);
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-dd_HH:mm:ss");
Fecha fuenteFileDate = nueva fecha();
Cadena fuenteFileDateStr = sdf.format(fuenteFileDate);
writeLogLn("Hora de finalización:" + sourceFileDateStr + " --------------------------------------" );
escribirLogLn("");
}
copyFile vacío estático privado (String sourceFileStr, String targetFileStr) {
Archivo fuenteFile = nuevo archivo (fuenteFileStr);
Archivo targetFile = nuevo archivo (targetFileStr);
// obtener la hora de modificación del archivo fuente
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-dd_HH:mm:ss");
long sourceFileModifiedTime = sourceFile.lastModified();
Fecha fuenteFileDate = nueva fecha (fuenteFileModifiedTime);
Cadena sourceFileDateStr = sdf.format(sourceFileDate);
// si el archivo de destino existe, compara el tiempo de modificación
si (archivodestino.existe()) {
largo targetFileModifiedTime = targetFile.lastModified();
Fecha targetFileDate = nueva fecha (targetFileModifiedTime);
Cadena targetFileDateStr = sdf.format(targetFileDate);
if (targetFileModifiedTime >= fuenteFileModifiedTime) {
messageStr = "¡Ignorar! SourceFileModifyTime:" + sourceFileDateStr
+ " TargetFileModifyTime:" + targetFileDateStr;
} demás {
// nioTransferCopy(archivo fuente, archivo destino);
systemCopy(sourceFileStr, targetFileStr);
messageStr = "¡Cubrir! SourceFileModifyTime: " + sourceFileDateStr
+ "TargetFileModifyTime: " + targetFileDateStr;
}
} demás {
// nioTransferCopy(archivo fuente, archivo destino);
systemCopy(sourceFileStr, targetFileStr);
messageStr = "¡Crear! SourceFileModifyTime: " + sourceFileDateStr;
}
messageStr += " | SourceFile: " + sourceFileStr + " | Archivo de destino: "
+ targetFileStr;
salidaln(cadenamensaje);
writeLogLn(mensajeStr);
}
copyDirectory vacío estático privado (String sourceDirectoryPath,
Cadena targetDirectoryPath) {
// crear directorio si no existe
Archivo targetDirectory = nuevo archivo (targetDirectoryPath);
si (!targetDirectory.exists()) {
targetDirectory.mkdir();
messageStr = "Crear directorio: " + targetDirectoryPath;
salidaln(cadenamensaje);
writeLogLn(mensajeStr);
}
// obtener todos los archivos o directorios en el directorio fuente
Archivo sourceDirectory = nuevo archivo (sourceDirectoryPath);
Archivo[] archivos = sourceDirectory.listFiles();
// atravesar archivos de copia
for (int i = 0; i < archivos.longitud; i++) {
Nombre de archivo de cadena = archivos[i].getName();
Cadena targetFileStr = targetDirectoryPath + nombre de archivo;
Cadena sourceFileStr = archivos[i].toString();
si (archivos[i].isFile()) {
copiarFile(sourceFileStr, targetFileStr);
}
si (archivos[i].isDirectory()) {
targetFileStr = targetFileStr + "/";
copyDirectory(fuenteFileStr, targetFileStr);
}
}
}
// vacío estático privado nioTransferCopy (origen del archivo, destino del archivo)
// lanza IOException {
// FileChannel en = nulo;
// FileChannel fuera = nulo;
// FileInputStream inStream = nulo;
// FileOutputStream outStream = nulo;
// intentar {
// inStream = nuevo FileInputStream(fuente);
// outStream = new FileOutputStream(destino);
// en = inStream.getChannel();
// salida = salidaStream.getChannel();
// in.transferTo(0, in.size(), out);
// } captura (IOException e) {
// e.printStackTrace();
// } finalmente {
// inStream.close();
// en.cerrar();
// outStream.close();
// salir.cerrar();
// }
// }
copia del sistema vacío estático privado (String sourceFileStr, String targetFileStr) {
Tiempo de ejecución tiempo de ejecución = Runtime.getRuntime();
sourceFileStr = sourceFileStr.replace("/", "//");
targetFileStr = targetFileStr.replace("/", "//");
intentar {
Cadena copyCmd = "cmd /c copiar /y /"" + sourceFileStr + "/" /""
+ targetFileStr + "/"";
runtime.exec(copyCmd);
} captura (IOException e) {
e.printStackTrace();
}
}
loadConfig vacío estático privado() {
intentar {
FileInputStream inputFile = nuevo FileInputStream(
"config.properties");
Propiedades p = nuevas Propiedades();
p.load(archivo de entrada);
rootSourcePath = p.getProperty("rootSourcePath");
rootTargetPath = p.getProperty("rootTargetPath");
logFilePath = p.getProperty("logFilePath");
rootSourcePath = new String(rootSourcePath.getBytes("8859_1"), "GBK");
rootTargetPath = new String(rootTargetPath.getBytes("8859_1"), "GBK");
logFilePath = new String(logFilePath.getBytes("8859_1"), "GBK");
salidaln("RutaOrigen: " + raízRutaOrigen);
salidaln("RutaDestino: " + raízRutaDestino);
salidaln("logFilePath: " + logFilePath);
writeLogLn("SourcePath: " + rootSourcePath);
writeLogLn("TargetPath: " + rootTargetPath);
} captura (IOException e1) {
e1.printStackTrace();
}
}
salida vacía estática privada (mensaje de cadena) {
System.out.println(mensaje);
}
appendWrite público estático vacío (contenido de cadena) {
intentar {
Escritor FileWriter = nuevo FileWriter (logFilePath, verdadero);
escritor.write(contenido);
escritor.close();
} captura (IOException e) {
e.printStackTrace();
}
}
writeLogLn vacío estático privado (mensaje de cadena) {
appendWrite(mensaje+"/r/n");
}
}