1、利用递归方法来遍历文件夹
2、引入com.google.code.gson
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
package main;
import com.google.gson.Gson;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class CopyFile {
public static void main(String[] args) {
getAllDirectorisAndFiles("C:/性能告警日志测试文档/sc测试文档/");
}
public static String getAllDirectorisAndFiles(String path) {
Map responseMap = new HashMap();
responseMap.put("time_stamp", System.currentTimeMillis());
String responseString = "";
try {
File file = new File("C:/性能告警日志测试文档/sc_out");
if (!file.exists()) {//如果文件夹不存在
file.mkdir();//创建文件夹
}
getDirectorisAndFiles(path, responseMap, "data");
responseString = (new Gson()).toJson(responseMap);
} catch (Exception e) {
System.out.println("files列表读取异常");
}
return responseString;
}
public static void getDirectorisAndFiles(String path, Map resultMap, String directoryName) throws IOException {
System.out.println(path);
System.out.println(directoryName);
File file = new File(path);
ArrayList dataArray = new ArrayList();
File[] files = file.listFiles();
for (File a : files) {
if (a.isDirectory()) {
Map tempMap = new HashMap();
getDirectorisAndFiles(path + a.getName() + "/", tempMap, a.getName());
dataArray.add(tempMap);
} else {
//复制文件
File dest = new File("C:/性能告警日志测试文档/sc_out/" + a.getName());
copyFileUsingFileStreams(a, dest);
dataArray.add(a.getName());
}
}
resultMap.put(directoryName, dataArray);
}
//复制文件
private static void copyFileUsingFileStreams(File source, File dest)
throws IOException {
InputStream input = null;
OutputStream output = null;
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
} catch (Exception ex) {
System.out.println(ex.toString());
} finally {
input.close();
output.close();
}
}
}