复制代码代码如下 :
paquet com.robin;
importer java.io.File ;
importer java.io.FileInputStream ;
importer java.io.FileWriter ;
importer java.io.IOException ;
importer java.text.SimpleDateFormat ;
importer java.util.Date ;
importer java.util.Properties ;
classe publique FileCopy {
// Chaîne statique privée rootSourcePath = "D:/temp/test1/";
chaîne statique privée rootSourcePath ;
chaîne statique privée rootTargetPath ;
chaîne statique privée logFilePath ;
chaîne statique privée messageStr ;
public static void main(String args[]) {
// test();
loadConfig();
writeLogLn("Démarrer--------------------------------------");
copyDirectory(rootSourcePath, rootTargetPath);
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj_HH:mm:ss");
Date sourceFileDate = new Date();
Chaîne sourceFileDateStr = sdf.format(sourceFileDate);
writeLogLn("Heure de fin :" + sourceFileDateStr + " --------------------------------------" );
writeLogLn("");
}
private static void copyFile (String sourceFileStr, String targetFileStr) {
Fichier sourceFile = nouveau fichier (sourceFileStr);
Fichier targetFile = nouveau fichier (targetFileStr);
// récupère l'heure de modification du fichier source
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj_HH:mm:ss");
long sourceFileModifiedTime = sourceFile.lastModified();
Date sourceFileDate = new Date(sourceFileModifiedTime);
Chaîne sourceFileDateStr = sdf.format(sourceFileDate);
// si le fichier cible existe, comparez l'heure de modification
if (targetFile.exists()) {
long targetFileModifiedTime = targetFile.lastModified();
Date targetFileDate = new Date(targetFileModifiedTime);
Chaîne targetFileDateStr = sdf.format(targetFileDate);
if (targetFileModifiedTime >= sourceFileModifiedTime) {
messageStr = "Ignorer ! SourceFileModifyTime :" + sourceFileDateStr
+ " TargetFileModifyTime :" + targetFileDateStr ;
} autre {
// nioTransferCopy(sourceFile, targetFile);
systemCopy(sourceFileStr, targetFileStr);
messageStr = "Couvrir ! SourceFileModifyTime : " + sourceFileDateStr
+ "TargetFileModifyTime : " + targetFileDateStr ;
}
} autre {
// nioTransferCopy(sourceFile, targetFile);
systemCopy(sourceFileStr, targetFileStr);
messageStr = "Créer ! SourceFileModifyTime : " + sourceFileDateStr ;
}
messageStr += " | SouceFile : " + sourceFileStr + " | Fichier cible : "
+ cibleFileStr ;
sortieln(messageStr);
writeLogLn(messageStr);
}
copyDirectory privé statique vide (String sourceDirectoryPath,
Chaîne targetDirectoryPath) {
// crée un répertoire s'il n'existe pas
Fichier targetDirectory = new File (targetDirectoryPath);
si (!targetDirectory.exists()) {
targetDirectory.mkdir();
messageStr = "Créer un répertoire : " + targetDirectoryPath ;
sortieln(messageStr);
writeLogLn(messageStr);
}
// récupère tous les fichiers ou répertoires du répertoire source
Fichier sourceDirectory = nouveau fichier (sourceDirectoryPath);
Fichier[] fichiers = sourceDirectory.listFiles();
// parcours des fichiers de copie
pour (int i = 0; i < files.length; i++) {
String filename = files[i].getName();
Chaîne targetFileStr = targetDirectoryPath + nom de fichier ;
Chaîne sourceFileStr = files[i].toString();
si (fichiers[i].isFile()) {
copyFile(sourceFileStr, targetFileStr);
}
si (fichiers[i].isDirectory()) {
cibleFileStr = cibleFileStr + "/" ;
copyDirectory(sourceFileStr, targetFileStr);
}
}
}
// vide statique privé nioTransferCopy (source du fichier, cible du fichier)
// lance IOException {
// FileChannel dans = null ;
// Sortie FileChannel = null ;
// FileInputStream inStream = null ;
// FileOutputStream outStream = null ;
// essayer {
// inStream = nouveau FileInputStream(source);
// outStream = nouveau FileOutputStream(cible);
// dans = inStream.getChannel();
// out = outStream.getChannel();
// in.transferTo(0, in.size(), out);
// } catch (IOException e) {
// e.printStackTrace();
// } enfin {
// inStream.close();
// in.close();
//outStream.close();
// out.close();
// }
// }
private static void systemCopy (String sourceFileStr, String targetFileStr) {
Runtime runtime = Runtime.getRuntime();
sourceFileStr = sourceFileStr.replace("/", "//");
targetFileStr = targetFileStr.replace("/", "//");
essayer {
Chaîne copyCmd = "cmd /c copy /y /"" + sourceFileStr + "/" /""
+ cibleFileStr + "/"" ;
runtime.exec(copyCmd);
} catch (IOException e) {
e.printStackTrace();
}
}
vide statique privé loadConfig() {
essayer {
FileInputStream inputFile = nouveau FileInputStream (
"config.propriétés");
Propriétés p = new Properties();
p.load(inputFile);
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");
outputln("CheminSource : " + rootCheminSource);
outputln("TargetPath : " + rootTargetPath);
outputln("logFilePath : " + logFilePath);
writeLogLn("SourcePath: " + rootSourcePath);
writeLogLn("TargetPath: " + rootTargetPath);
} catch (IOException e1) {
e1.printStackTrace();
}
}
sortie vide statique privée (message de chaîne) {
System.out.println(message);
}
public static void appendWrite (contenu de la chaîne) {
essayer {
FileWriterwriter = new FileWriter(logFilePath, true);
écrivain.write(content);
écrivain.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void writeLogLn (message de chaîne) {
appendWrite(message+"/r/n");
}
}