md转换成_post下直接使用的文件

package org.example;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter; public class Main {
enum FileTime {
CREATE, MODIFY, ACCESS;
} /*
---
title: 排序
date: 2023-09-03 13:14:22 +0800
categories: [algorithm, summary]
tags: [自定义标签1, 自定义标签2]
media_subpath: /assets/media/pictures/
description: haha
---
*/
public static final String FILE_PATH = "C:\\Users\\Spring\\Downloads\\algorithm";
public static final String DATE_PATTERN = "yyyy-MM-dd hh:mm:ss";
// md 文档中所有图片路径的父路径
public static final String MEDIA_SUB_PATH = "/assets/media/pictures/"; public static void main(String[] args) throws Exception {
File file = new File(FILE_PATH);
traverseDirectory(file);
} public static void main2(String[] args) throws IOException {
String s = "C:\\Users\\Spring\\Downloads\\algorithm\\summary\\链表反转.md";
File file = new File(s);
if (isMdFile(file.getName()))
System.out.println(getFileTime(new File(s), FileTime.MODIFY));
} // 将 markdown 文件转换成可以直接放在 _posts 文件夹下发布的文件
public static void convert(File file) throws Exception {
String dateStr = getFileTime(file, FileTime.MODIFY);
String originFileName = file.getName();
// 插入前页
insertFrontMatter(file, dateStr, originFileName);
// 加前缀
addDatePrefix(file, dateStr);
} public static void insertFrontMatter(File file, String dateStr, String originFileName) throws Exception {
String inserted = "---\n" +
"title: " + getName(originFileName) + "\n" +
"date: " + dateStr + " +0800\n" +
"categories: " + "[" +
"]\n" +
"tags: " + "[" +
"]\n" +
"media_subpath: " + MEDIA_SUB_PATH + "\n" +
"description: " +
"\n" +
"---\n";
insertFileHeader(inserted.getBytes(StandardCharsets.UTF_8), file);
} // 给文件增加日期前缀
public static void addDatePrefix(File file, String dateStr) {
String newName = file.getParent() + "\\" + dateStr.split(" ")[0] + "-" + file.getName();
File newFile = new File(newName);
if (!file.renameTo(newFile))
System.out.println("rename error");
} private static void insertFileHeader(byte[] header, File file) throws Exception {
RandomAccessFile src = new RandomAccessFile(file, "rw");
int srcLength = (int) src.length();
byte[] buff = new byte[srcLength];
src.read(buff, 0, srcLength);
src.seek(0);
src.write(header);
src.seek(header.length);
src.write(buff);
src.close();
} private static String getFileTime(File file, FileTime fileTime) throws IOException {
if (file == null) return null;
Path path = file.toPath();
BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
if (attr == null) return null; Instant instant = null;
switch (fileTime) {
// 创建时间
case CREATE:
instant = attr.creationTime().toInstant();
break;
// 更新时间
case MODIFY:
instant = attr.lastModifiedTime().toInstant();
break;
// 上次访问时间
case ACCESS:
attr.lastAccessTime().toInstant();
break;
default:
}
if (instant == null) return null;
return DateTimeFormatter.ofPattern(DATE_PATTERN).withZone(ZoneId.systemDefault()).format(instant);
} private static void traverseDirectory(File directory) throws Exception {
// 列出目录下的所有文件和子目录
File[] filesAndDirs = directory.listFiles();
if (filesAndDirs == null) return;
// 遍历每个文件和子目录
for (File fileOrDir : filesAndDirs) {
if (fileOrDir.isFile()) {
// 是 markdown 文件才处理
if (isMdFile(fileOrDir.getName())) {
convert(fileOrDir);
}
} else if (fileOrDir.isDirectory()) {
// 如果是目录,递归遍历子目录
traverseDirectory(fileOrDir);
}
}
} // 去除扩展名
private static String getName(String fileName) {
return fileName.substring(0, fileName.lastIndexOf('.'));
} // 判断是否是 markdown 文件
private static boolean isMdFile(String fileName) {
String extension = fileName.substring(fileName.lastIndexOf('.'));
return ".md".equals(extension) || ".markdown".equals(extension);
} }

md转换成_post下直接使用的文件的更多相关文章

  1. 把ASM下的HDD VM转换成ARM下Managed Disk的SSD VM

    在ASM下,要把HDD的VM转换成SSD的VM步骤非常复杂.需要手工把Disk从普通存储账户复制到高级存储账户.再通过这个Disk创建VM. 目前在有了ASM到ARM的迁移工具,以及Managed D ...

  2. Android网络图片转换成bitmap保存到本地指定文件夹

    下列代码,请求网络图片转换为bitmap,然后保存到指定文件夹,微信,QQ分享,要求缩略图不大于32kb 压缩图片代码,使用了Glide来进行图片压缩处理 Glide.get(ShopDetailsA ...

  3. 将任意音频格式文件转换成16K采样率16bit的wav文件

    此转换需要使用ffmpeg 假设有目录 d:\录音 目录有 张三.m4a, 李四.m4a xxx.m4a(其他任意格式音频触类旁通可以把 *.m4a改成*.*).批量转换成采样率16K,有符号,16b ...

  4. 将DataSet(DataTable)转换成JSON格式(生成JS文件存储)

    public static string CreateJsonParameters(DataTable dt) { /**/ /**/ /**/ /* /*********************** ...

  5. windows下的txt格式转换成linux下的TXT

    存在的问题是 多出一个方框或者黑格子 主要是因为bash 不能忽略windows的问题 用sed 命令来处理,分别是windows转linux,linux转windows sed -e 's/.$// ...

  6. 图片转换成Base64编码集成到html文件

    首先为什么要这么做?  原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...

  7. python csv文件转换成xml, 构建新xml文件

    csv文件 code from xml.etree.ElementTree import Element,ElementTree,tostring import json,csv def csvtox ...

  8. MD 使用 i5ting_toc 转换成 HTML

    MD 使用 i5ting_toc 转换成 HTML 本文作者:天析 作者邮箱:2200475850@qq.com 发布时间: Wed, 10 Jul 2019 13:59:00 +0800 前言 md ...

  9. 在windows 下将 chm 格式的文件 转换成 html 的文件

    有时我们可能需要将 chm 格式的文件 转换成 html 格式的网页文件,这时,如果你使用的是 windows 操作系统,那就可以用 windows 操作系统自带的反编译工具来完成这项任务,具体步骤: ...

  10. 使用pyInstaller发布PathMerge的exe版本(py转换成exe)

    前言 PathMerge是用python写的一个辅助文件夹合并的小工具,它的特点是不用担心合并后文件会丢失,旧文件会创建副本保存下来,除非你手动删除. 详情见:python开发目录合并小工具 Path ...

随机推荐

  1. 在深度计算框架MindSpore中如何对不持续的计算进行处理——对数据集进行一定epoch数量的训练后,进行其他工作处理,再返回来接着进行一定epoch数量的训练——单步计算

    如题所述: 深度学习框架MindSpore是华为公司研发的,由于性能设计的原因,MindSpore的一些使用方式和TensorFlow和PyTorch有一些不同,其中的一点就是在进行单步计算或者是非持 ...

  2. NuminaMath 是如何荣膺首届 AIMO 进步奖的?

    今年,Numina 和 Hugging Face 合作角逐 AI 数学奥林匹克 (AI Math Olympiad,AIMO) 的首届进步奖.此次比赛旨在对开放 LLM 进行微调,以使其能解决高中难度 ...

  3. 朋友吐槽我为什么这么傻不在源生成器中用string.GetHashCode, 而要用一个不够优化的hash方法

    明明有更好的hash方法 有位朋友对我吐槽前几天我列举的在源生成器的生成db映射实体的优化点 提前生成部分 hashcode 进行比较 所示代码 public static void Generate ...

  4. Git删除当前分支下的所有历史版本与log

  5. Transformer模型:Position Embedding实现

    在自然语言处理(NLP)中,Transformer 模型是一个非常重要的里程碑,它通过自注意力(self-attention)机制极大地提高了处理序列数据的能力.在 Transformer 模型中,词 ...

  6. 在 Python 中通过读取 .env 文件获得环境变量

    在编写 Python 脚本时,我们会使用一些私密数据,如调用 API 时使用的 token.为了避免隐私泄露,这些私密数据一般不直接写入脚本文件中.而是写入一个文件,并通过读取文件的方式获取私密数据内 ...

  7. 无法加载nodejs\vue.ps1

    发现问题 刚换了电脑之后,安装了node.js.vue/cli,在vscode中使用vue ui命令新建vue项目时,发现报错如下: 分析问题 多番查询后发现,一般此类问题大多出现在第一次运行脚本的电 ...

  8. spark 中时间和日期 操作,怎么找到前几天后几天

    1. timestamp 增加减少一个 time delta df.withColumn("added_hours",col("input_timestamp" ...

  9. CamoTeacher:玩转半监督伪装物体检测,双一致性动态调整样本权重 | ECCV 2024

    论文提出了第一个端到端的半监督伪装目标检测模型CamoTeacher.为了解决半监督伪装目标检测中伪标签中存在的大量噪声问题,包括局部噪声和全局噪声,引入了一种名为双旋转一致性学习(DRCL)的新方法 ...

  10. Spring Cloud集成Seata分布式事务-TCC模式

    参考文章 分布式事务实战方案汇总 https://www.cnblogs.com/yizhiamumu/p/16625677.html 分布式事务原理及解决方案案例https://www.cnblog ...