今天终于能舒服的写博客了
我的博客是使用Hexo静态部署,使用markdown写好文档后放到_posts
文件夹里就可以直接部署了。但_posts
目录里把所有文档都放在一起没有文件夹归类,因此我的思路是使用Typora
写好笔记后存在本地指定目录,定时运行java小程序把目录里的文档全部复制到_posts
里并调用cmd
命令生成、发布hexo博客,最后把我的存放笔记的目录上传gitee.com
中的仓库备份。
推荐使用Typora
写markdown,所写即所见,很方便、很优雅。如图:
左侧使用目录的管理方式,可以很方便的在本地写文档。我不太喜欢博客网站中写,需要打开浏览器,访问网站等一系列操作,如断网还保存不了。
这里分享一个使用Typora写hexo博客的小技巧,使用输入法的自定义短语生成文章头部的yaml样式,可自动生成时间 ,我们只需要填写标题,标签,分类即可。
如下图我写好的note按分类放在F:/Markdown
目录,在这个目录下面还有一个。java
文件与一个bat
文件。
java
文件的作用是把该目录中的所有md
复制到hexo
中的_posts
中然后调用cmd命令进行生成、发布等操作,bat
文件的作用主要是设置系统的定时任务调用java
小程序,最后把F:Markdown
中的文件上传gitee.com
仓库备份。
代码比较简单,直接上代码了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| class DeployBlog { public static final String HEXO_DIR = "F:/Blog/source/_posts"; public static final String MARKDOWN_DIR = "F:/Markdown"; public static List<File> fileList = new ArrayList<File>();
public void getMarkdown(File file) { if (file.isFile()) { if (file.getName().indexOf("md") > -1) { fileList.add(file); } } else if (file.isDirectory()) { if (file.getName() != ".git") { File[] files = file.listFiles(); if (files != null) { for (File f : files) { getMarkdown(f); } } } } }
public void writeFile() { File file = new File(HEXO_DIR); if (!file.exists()) { file.mkdirs(); } for (File f1 : file.listFiles()) { f1.delete(); } for (File f2 : fileList) { File dest = new File(file, f2.getName()); try { Files.copy(f2.toPath(), dest.toPath()); } catch (IOException e) { e.printStackTrace(); } } }
public String deployHexo() throws Exception{ String cmd = "cd " + HEXO_DIR + " && hexo clean && hexo g && hexo d"; List<String> cmds = new LinkedList<String>();
cmds.add("cmd.exe");
cmds.add("/c"); cmds.add(cmd); System.out.println("deploy..."); ProcessBuilder pb = new ProcessBuilder(cmds); pb.redirectErrorStream(true); Process p = pb.start(); p.waitFor(3, TimeUnit.SECONDS); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); StringBuffer sb = new StringBuffer(); String line; while ((line = br.readLine()) != null) { sb.append(line).append("\n"); } String result = sb.toString(); return result; }
public static void main(String[] args) { DeployBlog deployBlog = new DeployBlog(); File file = new File(MARKDOWN_DIR); deployBlog.getMarkdown(file); deployBlog.writeFile(); try { String cmdstr = deployBlog.deployHexo(); System.out.println(cmdstr); }catch (Exception e){ e.printStackTrace(); } System.out.println("deploy success!");
} }
|
关于java中执行cmd命令可以搜索我博客中的文章:Java中执行bat或shell命令.md,其它文件操作比较简单就不多说了。最后使用一个bat完成java的调用。
1 2 3 4 5 6 7 8 9 10 11 12 13
| @echo off echo 正在更新博客... javac DeployBlog.java java DeployBlog
echo 博客更新成功!访问hjwjw.github.io查看 echo ==================================== echo 正在备份笔记... git add . git commit -m "backup blog" git push echo 备份成功! choice /T 5 /C ync /CS /D y /n
|
bat文件内容也比较简单,最后一条是暂停5秒后才关闭窗口。
最后一步是设置windows定时任务,定时执行这个bat文件即可:joy:
虽然方式算不上很高级,技术含量也不是很高,不过我感觉写博客已经很舒适了,使用自己喜欢的Markdown软件,自己的博客,本地写作,自动部署、自动备份。
写在最后:
写Markdown文档最头疼的就是图床了,这里推荐我在用的图床工具,点击直达github:PicGo