原文本内容:

2020-01-21 08:31:08.520 [main] INFO  logbackCfg.App -秦时明月汉时关
2020-01-21 08:31:08.521 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-21 08:31:08.521 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-21 08:31:08.521 [main] TRACE logbackCfg.App -不教胡马度阴山
2020-01-21 08:31:10.311 [main] INFO logbackCfg.App2 -九里山前作战场
2020-01-21 08:31:10.317 [main] ERROR logbackCfg.App2 -牧童拾得旧刀枪
2020-01-21 08:31:10.317 [main] DEBUG logbackCfg.App2 -微风吹皱乌江水
2020-01-21 08:31:10.317 [main] TRACE logbackCfg.App2 -恰似虞姬别霸王
2020-01-21 08:31:13.521 [main] INFO logbackCfg.App -秦时明月汉时关
2020-01-21 08:31:13.521 [main] ERROR logbackCfg.App -万里长征人未还
2020-01-21 08:31:13.521 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-21 08:31:13.521 [main] TRACE logbackCfg.App -不教胡马度阴山
2020-01-21 08:31:14.262 [main] INFO logbackCfg.NewDayThread -万里赴戎机,关山度若飞。
2020-01-21 08:31:14.267 [main] ERROR logbackCfg.NewDayThread -朔气传金柝,寒光照铁衣。
2020-01-21 08:31:14.267 [main] DEBUG logbackCfg.NewDayThread -将军百战死,壮士十年归。

使用如下程序进行替换:

package randomaccessfile;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile; public class RndAccessFile {
public static void main(String[] args) {
RandomAccessFile rndFile = null;
try {
rndFile = new RandomAccessFile("D:\\logs\\rndTest.txt", "rw"); String line = null;
long lastPoint = 0; while ((line = rndFile.readLine()) != null) {
final long point = rndFile.getFilePointer(); // ASCII字符替换
if(line.contains("ERROR")){
String str=line.replace("ERROR", "error");
rndFile.seek(lastPoint);
rndFile.writeBytes(str);
} // UTF8字符替换
String utf8 = new String(line.getBytes("ISO-8859-1"),"UTF-8");
if(utf8.contains("秦时明月汉时关")){
String str=utf8.replace("秦时明月汉时关", "葡萄美酒夜光杯");// Must be same length
rndFile.seek(lastPoint);
rndFile.write(str.getBytes("UTF-8"));
} lastPoint = point;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
rndFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

替换结果:

2020-01-21 08:31:08.520 [main] INFO  logbackCfg.App -葡萄美酒夜光杯
2020-01-21 08:31:08.521 [main] error logbackCfg.App -万里长征人未还
2020-01-21 08:31:08.521 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-21 08:31:08.521 [main] TRACE logbackCfg.App -不教胡马度阴山
2020-01-21 08:31:10.311 [main] INFO logbackCfg.App2 -九里山前作战场
2020-01-21 08:31:10.317 [main] error logbackCfg.App2 -牧童拾得旧刀枪
2020-01-21 08:31:10.317 [main] DEBUG logbackCfg.App2 -微风吹皱乌江水
2020-01-21 08:31:10.317 [main] TRACE logbackCfg.App2 -恰似虞姬别霸王
2020-01-21 08:31:13.521 [main] INFO logbackCfg.App -葡萄美酒夜光杯
2020-01-21 08:31:13.521 [main] error logbackCfg.App -万里长征人未还
2020-01-21 08:31:13.521 [main] DEBUG logbackCfg.App -但使龙城飞将在
2020-01-21 08:31:13.521 [main] TRACE logbackCfg.App -不教胡马度阴山
2020-01-21 08:31:14.262 [main] INFO logbackCfg.NewDayThread -万里赴戎机,关山度若飞。
2020-01-21 08:31:14.267 [main] error logbackCfg.NewDayThread -朔气传金柝,寒光照铁衣。
2020-01-21 08:31:14.267 [main] DEBUG logbackCfg.NewDayThread -将军百战死,壮士十年归。

参考资料:

https://www.cnblogs.com/wangjinyu/p/10803596.html

使用java.io.RandomAccessFile更改文本文件的内容的更多相关文章

  1. Java IO RandomAccessFile 任意位置读/写

    随机读写类 RandomAccessFile的唯一父类是Object,与其他流父类不同.是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必 ...

  2. Java IO: RandomAccessFile

    原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分.FileIn ...

  3. Java io实现读取文件特殊内容进行替换

    最近公司在做一个项目其中一个需求是读取文件中的特殊字符在其后进行添加或删除字符操作,本来想直接使用randomAccessFile按行读取,读取到特殊字符就进行添加或删除操作,但是randomAcce ...

  4. java Io流向指定文件输入内容

    package com.hp.io; import java.io.*; public class BufferedWriterTest{ public static void main(String ...

  5. Java一次读取文本文件所有内容

    转自https://www.cnblogs.com/longronglang/p/7458027.html#undefined 我们做文本处理的时候的最常用的就是读写文件了,尤其是读取文件,不论是什么 ...

  6. Java IO 之 RandomAccessFile 操作文件内容

    RandomAccessFile类实现对文件内容的随机读写 文件内容的随机操作,重难点在于字符操作,具体查看API package org.zln.io.file; import java.io.IO ...

  7. java io系列26之 RandomAccessFile

    本文主要介绍 RandomAccessFile. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_26.html 更多内容请参考:java io系列0 ...

  8. [Java IO]01_File类和RandomAccessFile类

    File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作.   File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...

  9. Java—IO流 RandomAccessFile类

    RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byt ...

随机推荐

  1. java验证输入是否为三阶幻方

    问题描述: 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又 ...

  2. Netty之旅:你想要的NIO知识点,这里都有!

    高清思维导图原件(xmind/pdf/jpg)可以关注公众号:一枝花算不算浪漫 回复nio即可.(文末有二维码) 前言 抱歉好久没更原创文章了,看了下上篇更新时间,已经拖更一个多月了. 这段时间也一直 ...

  3. java SFTP工具类

    需要导入jsch-0.1.52.jar import java.io.File; import java.io.FileInputStream; import java.io.FileOutputSt ...

  4. Qt之先用了再说系列-多线程方式1

    Qt 多线程的用法还是比较简单的,也比较好用,接下来我们就分析分析如何使用. 说起Qt 线程的使用方式,一般有2种使用方式,具体哪种比较好看自己心情了,现在有官方的推荐用法,用不用还是看你心情的 好, ...

  5. 利用Unity3D制作简易2D计算器

    利用Unity3D制作简易2D计算器 标签(空格分隔): uiniy3D 1. 操作流程 在unity3DD中创建一个新项目 注意选择是2D的(因为默认3D) 在Assets框右键新建C#脚本 在新建 ...

  6. 存储系列之 从ext2到ext3、ext4 的变化与区别

    引言:ext3 和 ext4 对 ext2 进行了增强,但是其核心设计并没有发生变化.所以建议先查看上上篇的<存储系列之 Linux ext2 概述 >,有了ext2的基础,看这篇就是so ...

  7. 初始化itable

    在InstanceKlass::link_class_impl()方法中完成方法连接后会继续初始化vtable与itable,之前已经介绍过vtable与itable,并且在类解析过程中已经完成了大小 ...

  8. 【WC2013】 糖果公园 - 树上莫队

    问题描述 Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来糖果公园游玩.糖果公园的结构十分奇特,它由 n 个游览点构成, ...

  9. Ubuntu 18.04 安装配置 go 语言

    Ubuntu 18.04 安装配置 go 语言 1.下载 下载 jdk 到 Downloands 文件夹下 cd 进入 /usr/local, 创建 go 文件夹, 然后 cd 进这个文件夹 cd / ...

  10. Android 获取对象列表中的某一列 / 所有对象的某一字段,Realm数据库可获取某一字段所有值

    现在项目用的数据库是Realm,所以想要获取数据库中某一字段的数据没有一句直接的语句进行获取,就像MySQL一样的select name from User,从User表里获取所有的name. 所以只 ...