java修改文件内容普通读写流_利用Java输入输出流更改文件中指定的内容

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

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

转换的目标

Typora中的数学格式:

$$

\text{奇函数:}f(x) = -f(-x)

$$

wordpress中的数学格式:

​```mathjax

\text{奇函数:}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\n";//进行头标记的转换

bufferedWriter.write(transformLine);//写入到目标文件中

System.out.println(transformLine);

} else if (line.startsWith("$$")) {//是尾标记

bufferedWriter.write("```\n");//对尾标记进行转换并且写入

} else {

bufferedWriter.write(line + "\n");//既不是头标记也不是尾标记,正常写入

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);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值