//输出代码
public void priviewCode(String codePath) {
List<String> paths= traverseFolder1(codePath);
for(String path:paths){
File file=new File(path);
if(file.isFile()){
try {//读取指定文件路径下的文件内容
String fileDatas = readFile(file);
System.out.println(fileDatas);
}
public static List<String> traverseFolder1(String path) {
List<String> paths=new ArrayList<>();
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
// paths.add(file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
paths.add(file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
// paths.add(file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
paths.add(file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
return paths;
}
/**
* 获取某文件夹下的文件名和文件内容,存入map集合中
* @param filePath 需要获取的文件的 路径
* @return 返回存储文件名和文件内容的map集合
*/
public static Map<String, String> getFilesDatas(String filePath){
Map<String, String> files = new HashMap<>();
File file = new File(filePath); //需要获取的文件的路径
String[] fileNameLists = file.list(); //存储文件名的String数组
File[] filePathLists = file.listFiles(); //存储文件路径的String数组
for(int i=0;i<filePathLists.length;i++){
if(filePathLists[i].isFile()){
try {//读取指定文件路径下的文件内容
String fileDatas = readFile(filePathLists[i]);
//把文件名作为key,文件内容为value 存储在map中
files.put(fileNameLists[i], fileDatas);
} catch (IOException e) {
e.printStackTrace();
}
}
}
return files;
}
/**
* 读取指定目录下的文件
* @param path 文件的路径
* @return 文件内容
* @throws IOException
*/
public static String readFile(File path) throws IOException{
//创建一个输入流对象
InputStream is = new FileInputStream(path);
//定义一个缓冲区
byte[] bytes = new byte[1024];// 1kb
//通过输入流使用read方法读取数据
int len = is.read(bytes);
//System.out.println("字节数:"+len);
String str ;
StringBuilder stringBuilder = new StringBuilder();
while(len!=-1){
//把数据转换为字符串
str = new String(bytes, 0, len);
stringBuilder.append(str);
// System.out.println(str);
//继续进行读取
len = is.read(bytes);
}
//释放资源
is.close();
return stringBuilder.toString();
}
参考:
https://www.cnblogs.com/azhqiang/p/4596793.html
https://blog.csdn.net/yangyang975/article/details/108312789