zoukankan      html  css  js  c++  java
  • 利用Java输入输出流更改文件中指定的内容

    利用Java输入输出流更改文件中指定的内容

    ​ 昨天准备发布一个数学公式的博客wordpress上,但是在Typora中写的数学公式的格式与wordpress中的编辑器所指定的格式不同。本来想着手动改一下算了,但仔细一想这个数学公式博客以后还会更新,所以干脆写一个程序直接转换格式。本来想用python进行转换的但是读取文件时出现了错误,所以想着先用Java处理,以后再试着用python去处理。

    转换的目标

    Typora中的数学格式:

    $$
    	ext{奇函数:}f(x) = -f(-x)
    $$
    

    wordpress中的数学格式:

    ​```mathjax
    	ext{奇函数:}f(x) = -f(-x)
    ​```
    

    实现思路:

    这两者之间主要是头标记和尾标记需要进行处理,中间部分都还是使用Latex进行书写的。因此我们的目标是只需要将头标记$$转换为 ```mathjax,尾标记$$转化为```就可以了。

    接着想怎么用编程实现

    • 先要将文件读入到程序中,在这里由于文件内容都是字符所以我使用Reader类去处理会比用InputStream类方便一些
    • 然后我想让程序一行一行的去读入,可以不用去使用字符串的截断操作,因此我会使用BufferedReader类中的readLine()方法去一行一行的读入
    • 接着我们只要让程序在第一次读入$$时转换为 ```mathjax,第二次读入时将$$转化为```,然后写入到另一个文件中去,这就大功告成了。

    代码实现:

    import java.io.*;
    
    /**
     * @Author HeHao
     * @Date 2020/10/21 17:10
     * @Version 1.0
     */
    public class Transform {
        /**
         *
         * @param sourcePath 读取文件的路径
         * @param destinationPath 写入文件的路径
         */
        static void readFile(String sourcePath, String destinationPath) {
            try {
                var bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(sourcePath)));
                var bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destinationPath)));
                var line = ""; //每一次读入一行的内容
                var first$$ = false;//是不是头标记$$
                while ((line = bufferedReader.readLine()) != null) {//如果没有读到文件末尾就一直读取
                    if (line.startsWith("$$"))
                        first$$ = !first$$;
                    if (first$$ && line.startsWith("$$")) {//是头标记$$
                        var transformLine = "```mathjax
    ";//进行头标记的转换
                        bufferedWriter.write(transformLine);//写入到目标文件中
                        System.out.println(transformLine);
                    } else if (line.startsWith("$$")) {//是尾标记
                        bufferedWriter.write("```
    ");//对尾标记进行转换并且写入
                    } else {
                        bufferedWriter.write(line + "
    ");//既不是头标记也不是尾标记,正常写入
                        System.out.println(line);
                    }
                }
                bufferedReader.close();//关闭读写资源
                bufferedWriter.flush();
                bufferedWriter.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            var sourcePath = "C:\Users\10365\Desktop\math\公式.md";
            var destinationPath = "C:\Users\10365\Desktop\math\公式2.md";
            readFile(sourcePath, destinationPath);
        }
    }
    
  • 相关阅读:
    HCIE_交换篇_ARP
    HCIE_交换篇_MAC地址漂移
    ubuntu19+nextcloud
    HCIE_交换篇_MAC地址
    华三交换机恢复出厂设置
    光纤相关
    华三防火墙实用操作
    如何逼自己成为一个上进的人?
    ubuntu16安装squid代理服务器
    李敖
  • 原文地址:https://www.cnblogs.com/JAVA-54188/p/13868425.html
Copyright © 2011-2022 走看看