将文件夹合成一个文件、将合成的文件还原成文件夹
public static void main(String[] args) throws Exception {
String dir = "C:\\Users\\lei.yan004\\Desktop\\临时文件\\合成测试\\";
File dirPath = new File(dir + "待合成目录");
File saveFile = new File(dir + "待合成目录.txt");
FileWriter fileWriter = new java.io.FileWriter(saveFile, true);
BufferedWriter bw = new BufferedWriter(fileWriter);
bw.flush();
bw.close();
splitDir(dir, "C:\\Users\\lei.yan004\\Desktop\\临时文件\\合成测试\\还原\\", saveFile);
}
public static boolean isFilter(File file) {
List<String> fileFilter = Arrays.asList(".git",".iml",".class",".jar");
List<String> dirFilter = Arrays.asList(".git","target");
String name = file.getName();
if (file.isFile()) {
for (String string : fileFilter) {
if(name.endsWith(string)) {
return true;
}
}
}
if (file.isDirectory()) {
if(dirFilter.contains(name)) {
return true;
}
}
return false;
}
public static void mergeDir(File file, BufferedWriter bw) throws Exception {
File[] fileArr = file.listFiles();
if (null == fileArr || fileArr.length <= 0)
{
return;
}
for (File itemFile : fileArr) {
if(isFilter(itemFile)) {
continue;
}
if (itemFile.isFile()) {
bw.newLine();
bw.write("file-name:" + itemFile.getPath());
FileReader fr = new FileReader(itemFile);
BufferedReader bf = new BufferedReader(fr);
String line;
while ((line = bf.readLine()) != null) {
bw.newLine();
bw.write(line);
}
bw.flush();
fr.close();
bf.close();
}
if (itemFile.isDirectory()) {
bw.newLine();
bw.write("directory-name:" + itemFile.getPath());
bw.flush();
mergeDir(itemFile, bw);
}
}
}
public static void splitDir(String oldPath, String newPath, File file) {
try {
FileReader fr = new FileReader(file);
BufferedReader bf = new BufferedReader(fr);
String line;
BufferedWriter bw = null;
boolean isfirst = true;
while ((line = bf.readLine()) != null) {
if (line.startsWith("file-name:")) {
if (bw != null) {
bw.flush();
}
String fileDir = line.substring("file-name:".length(), line.lastIndexOf("\\"));
String fileName = line.substring(line.lastIndexOf("\\") + 1);
fileDir = fileDir.replace(oldPath, newPath);
if (!new File(fileDir).exists()) {
new File(fileDir).mkdirs();
}
File newFile = new File(fileDir + File.separator + fileName);
newFile.createNewFile();
FileWriter fileWriter = new FileWriter(newFile, true);
bw = new BufferedWriter(fileWriter);
isfirst = true;
} else if (line.startsWith("directory-name:")) {
String fileDir = line.substring("directory-name:".length());
fileDir = fileDir.replace(oldPath, newPath);
if (!new File(fileDir).exists()) {
new File(fileDir).mkdirs();
}
} else {
if (bw != null) {
if (!isfirst) {
bw.newLine();
}
bw.write(line);
bw.flush();
isfirst = false;
}
}
}
bf.close();
fr.close();
if (bw != null) {
bw.flush();
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}