package demo.log;
//文件转移类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TransferFile {
public static Map<String, File> copiedFiles = new HashMap<String, File>();
public static void scanCopiedFile(File file) {
File[] fileList = file.listFiles();
for (File f : fileList) {
// if (f.isFile()) {
String fn = f.getName();
if (!copiedFiles.containsKey(fn)) {
copiedFiles.put(fn, f);
}
// }
}
}
// 将文件拷贝到指定的文件夹下
public static int copyFile(File oldFile, String newpath) throws Exception {
try {
// File oldFile = new File(oldpath);// 获取原文件
File newFile = new File(newpath);
if (!newFile.exists())// 源文件夹不存在,则创建一个
{
newFile.mkdirs();
}
int len = 0;
if ((oldFile.exists()) && (oldFile.isFile()))// 如果文件存在
{
FileInputStream inFile = new FileInputStream(oldFile);
String key = getFileCharacter(oldFile);
// FileOutputStream outFile = new FileOutputStream(newpath + "/"
// + (oldFile.getName()).toString());
FileOutputStream outFile = new FileOutputStream(newpath + "/"
+ key);
byte[] buffer = new byte[1024 * 10];
while ((len = inFile.read(buffer)) != -1) {
outFile.write(buffer, 0, len);
}
outFile.flush();
outFile.close();
inFile.close();
// oldFile.delete();// 删除备份后的原文件
return 0;
}
} catch (Exception e) {
throw new Exception(e.getMessage());
// return -1;
}
return 1;
}
// 将制定文件夹下的所有文件复制到新的文件夹下
public static int copyFiles(String oldpath, String newpath)
throws Exception {
if (copiedFiles.isEmpty()) {
scanCopiedFile(new File(newpath));
}
File file = new File(oldpath);
File[] files = file.listFiles();
int cnt = 0;
for (File fl : files) {
// if (fl.isFile()) {
String key = getFileCharacter(fl);
if (!copiedFiles.containsKey(key)) {
// int result =
copyFile(file, newpath);
cnt++;
// if (result == 0) {
copiedFiles.put(key, fl);
// }
}
}
return cnt;
}
// 获取文件的特征值
private static String getFileCharacter(File file) {
StringBuffer sb = new StringBuffer();
long upl = file.lastModified();
Date upDate = new Date(upl);
long fl = file.length();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
sb.append(sdf.format(upDate));
sb.append("_");
sb.append(fl);
sb.append("_");
sb.append(file.getName());
return sb.toString();
}
}
//文件转移类
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TransferFile {
public static Map<String, File> copiedFiles = new HashMap<String, File>();
public static void scanCopiedFile(File file) {
File[] fileList = file.listFiles();
for (File f : fileList) {
// if (f.isFile()) {
String fn = f.getName();
if (!copiedFiles.containsKey(fn)) {
copiedFiles.put(fn, f);
}
// }
}
}
// 将文件拷贝到指定的文件夹下
public static int copyFile(File oldFile, String newpath) throws Exception {
try {
// File oldFile = new File(oldpath);// 获取原文件
File newFile = new File(newpath);
if (!newFile.exists())// 源文件夹不存在,则创建一个
{
newFile.mkdirs();
}
int len = 0;
if ((oldFile.exists()) && (oldFile.isFile()))// 如果文件存在
{
FileInputStream inFile = new FileInputStream(oldFile);
String key = getFileCharacter(oldFile);
// FileOutputStream outFile = new FileOutputStream(newpath + "/"
// + (oldFile.getName()).toString());
FileOutputStream outFile = new FileOutputStream(newpath + "/"
+ key);
byte[] buffer = new byte[1024 * 10];
while ((len = inFile.read(buffer)) != -1) {
outFile.write(buffer, 0, len);
}
outFile.flush();
outFile.close();
inFile.close();
// oldFile.delete();// 删除备份后的原文件
return 0;
}
} catch (Exception e) {
throw new Exception(e.getMessage());
// return -1;
}
return 1;
}
// 将制定文件夹下的所有文件复制到新的文件夹下
public static int copyFiles(String oldpath, String newpath)
throws Exception {
if (copiedFiles.isEmpty()) {
scanCopiedFile(new File(newpath));
}
File file = new File(oldpath);
File[] files = file.listFiles();
int cnt = 0;
for (File fl : files) {
// if (fl.isFile()) {
String key = getFileCharacter(fl);
if (!copiedFiles.containsKey(key)) {
// int result =
copyFile(file, newpath);
cnt++;
// if (result == 0) {
copiedFiles.put(key, fl);
// }
}
}
return cnt;
}
// 获取文件的特征值
private static String getFileCharacter(File file) {
StringBuffer sb = new StringBuffer();
long upl = file.lastModified();
Date upDate = new Date(upl);
long fl = file.length();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
sb.append(sdf.format(upDate));
sb.append("_");
sb.append(fl);
sb.append("_");
sb.append(file.getName());
return sb.toString();
}
}