# publicNotes **Repository Path**: lusenlin1997/publicNotes ## Basic Information - **Project Name**: publicNotes - **Description**: Java学习的代码笔记 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2020-07-31 - **Last Updated**: 2020-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # publicNotes #### 介绍 Java学习的代码笔记 此笔记在线查看网址:[请点击](https://lusenlin1997.gitee.io) ###### 这是一个maven文件 依赖org.springframework.util.FileSystemUtils; ```xml org.springframework.boot spring-boot-starter-web 2.2.6.RELEASE ``` ```java package com.fileio; import org.springframework.util.FileSystemUtils; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.FileTime; public class MdFileHandle { //存放图片的文件夹名称 final static String typoraImgPath="typoraImg"; //把图片或者图片的文件夹拷贝到哪里 final static String typoraImgCopyTo="E:\\MyCode\\GitRepository\\hugoBlog\\blog\\static\\typoraImg"; //处理md文件时 是否在开头插入一些说明? final static boolean mdBeforeInsertInfo=true; //把处理过后的md文件放在哪 final static String MD_FILE_OUT_Path="E:\\MyCode\\GitRepository\\hugoBlog\\blog\\content\\post"; //example: F:\fileHandle\port public static void main(String[] args) throws IOException { //singleMdFile(); //单个md文件的读取 //1根目录 File rootFile=new File("E:\\同步的文件synchronization\\synchronousNotes\\ProgramingNotes"); //根目录不为null 且是个目录 if(rootFile!=null && rootFile.isDirectory()) { //2获得根目录下的所有子目录 File[] files = rootFile.listFiles(); for (int i = 0; i < files.length; i++) { singleDirectory(files[i],rootFile.getName()); } } } //对子目录进行处理 子目录Example:框架 public static void singleDirectory(File file,String parentName) throws IOException { if (file.isDirectory() && !file.getName().equals(typoraImgPath)) { //若是个文件夹 而且不是放图片的 则进行递归 for (int i = 0; i < file.listFiles().length; i++) { singleDirectory(file.listFiles()[i], file.getName()); } } else if (file.isDirectory() && file.getName().equals(typoraImgPath)) { //若是个文件夹 而且名称为typoraImgPath 是的话把其copy到typoraImgCopyTo FileSystemUtils.copyRecursively(file, new File(typoraImgCopyTo)); } else if (file.isFile()) { //若是md,就对其进行 替换和拷贝 singleMdFile(file, parentName); } } //对单个文件进行处理 private static void singleMdFile(File mdFile,String parentDirectoryName) throws IOException { boolean replaceFlag=true; //获得文件名称(不包含后缀) 若是"typora使用规则"则不进行替换 String fileName=mdFile.getName().substring(0,mdFile.getName().indexOf(".")); if(fileName.equals("typora使用规则")){ replaceFlag=false; } //单个文件进行读写 mdFileCopyAdnHandle(mdFile, replaceFlag,parentDirectoryName); } //对单个文件进行读写 private static void mdFileCopyAdnHandle(File mdFile, boolean replaceFlag,String parentDirectoryName) throws IOException { //文件读取 FileInputStream fileInputStream=new FileInputStream(mdFile); InputStreamReader inputStream=new InputStreamReader(fileInputStream); BufferedReader reader=new BufferedReader(inputStream); //文件写入 File outFile=new File(MD_FILE_OUT_Path+"\\"+mdFile.getName()); FileOutputStream fileOutputStream=new FileOutputStream(outFile); OutputStreamWriter outputStream=new OutputStreamWriter(fileOutputStream); BufferedWriter writer=new BufferedWriter(outputStream); String line = null; String oidString="typoraImg/"; //若需要在md文件前插入一些说明 mdBeforeInsertInfo=true。 if (mdBeforeInsertInfo && replaceFlag){ String title=mdFile.getName()+"\n"; String date=MdFileUtil.getCreateTime(mdFile.getPath())+"\n"; String lastmod=MdFileUtil.getLastModified(mdFile.getPath())+"\n"; String categories="["+parentDirectoryName+"]\n";//["牛皮", "中文", "category-3"] writer.write("---"+"\n"); writer.write("title: "+title); writer.write("date: "+date); writer.write("lastmod: "+lastmod); writer.write("categories: "+categories); writer.write("---"+"\n"); writer.flush(); } while ((line=reader.readLine())!=null){ String newString=line; if(line.indexOf(oidString)!=-1 && replaceFlag){ newString = line.replaceAll(oidString, "/typoraImg/"); } if (line.startsWith("[TOC]") || line.startsWith("# catalog") && replaceFlag ){ newString=""; } if (line.startsWith("> #") && replaceFlag ){ newString=newString.replaceFirst("# ","**"); newString=newString.replaceAll("#",""); newString=newString+"**"; } //进行复制写 writer.write(newString+"\n"); writer.flush(); } //关闭写出流 writer.close(); reader.close(); } //md文件处理工具类 //1获得创建时间 最后修改时间 public static class MdFileUtil { //根据路径获得创建时间 格式:2020-02-05 static String getCreateTime(String filePath) throws java.io.IOException { FileTime t= Files.readAttributes(Paths.get(filePath), BasicFileAttributes.class).creationTime(); String creatTime = t.toString().substring(0, 10); return creatTime; } //根据路径获得最后修改时间 格式:2020-02-05 static String getLastModified(String filePath) throws java.io.IOException { FileTime t= Files.readAttributes(Paths.get(filePath), BasicFileAttributes.class).lastModifiedTime(); String lastModified = t.toString().substring(0, 10); return lastModified; } //在md文件前插入说明 }//MyFileTimeUtil Class }//本类 ```