使用java.io.RandomAccessFile更改文本文件的内容
原文本内容:
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更改文本文件的内容的更多相关文章
- Java IO RandomAccessFile 任意位置读/写
随机读写类 RandomAccessFile的唯一父类是Object,与其他流父类不同.是用来访问那些保存数据记录的文件的,这样你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必 ...
- Java IO: RandomAccessFile
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分.FileIn ...
- Java io实现读取文件特殊内容进行替换
最近公司在做一个项目其中一个需求是读取文件中的特殊字符在其后进行添加或删除字符操作,本来想直接使用randomAccessFile按行读取,读取到特殊字符就进行添加或删除操作,但是randomAcce ...
- java Io流向指定文件输入内容
package com.hp.io; import java.io.*; public class BufferedWriterTest{ public static void main(String ...
- Java一次读取文本文件所有内容
转自https://www.cnblogs.com/longronglang/p/7458027.html#undefined 我们做文本处理的时候的最常用的就是读写文件了,尤其是读取文件,不论是什么 ...
- Java IO 之 RandomAccessFile 操作文件内容
RandomAccessFile类实现对文件内容的随机读写 文件内容的随机操作,重难点在于字符操作,具体查看API package org.zln.io.file; import java.io.IO ...
- java io系列26之 RandomAccessFile
本文主要介绍 RandomAccessFile. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_26.html 更多内容请参考:java io系列0 ...
- [Java IO]01_File类和RandomAccessFile类
File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作. File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...
- Java—IO流 RandomAccessFile类
RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byt ...
随机推荐
- Java 命令行 编译、执行、打包
Java 命令行 编译.执行.打包 一般来说 IDE 能够很方便的编译打包. 我写这篇文章是遇到了不能使用 IDE 的情况,简单记录一下,不做深入探讨. 环境 linux jdk 1.8 简单的编译执 ...
- 【模式识别与机器学习】——3.5Fisher线性判别
---恢复内容开始--- 出发点 应用统计方法解决模式识别问题时,一再碰到的问题之一就是维数问题. 在低维空间里解析上或计算上行得通的方法,在高维空间里往往行不通. 因此,降低维数有时就会成为处理实际 ...
- java web应用启动报错:Caused by: java.lang.ClassNotFoundException: ServletContext
ServletContext是个接口,不同的WEB容器(tomcat, jboss等)都有各自的实现. 一般是缺少servlet-api.jar包 在Java Build Path的Libraries ...
- Visual-platform,基于Vue的可视化大屏开发GUI框架
visual-platform 基于Vue的可视化大屏开发GUI框架 ------ CreatedBy 漆黑小T 构建用于开发可视化大屏项目的自适应布局的GUI框架. github仓库: https: ...
- C#LeetCode刷题-堆
堆篇 # 题名 刷题 通过率 难度 23 合并K个排序链表 39.4% 困难 215 数组中的第K个最大元素 51.5% 中等 218 天际线问题 32.9% 困难 239 滑动窗口最大值 ...
- Java 创建、刷新Excel透视表/设置透视表行折叠、展开
透视表是依据已有数据源来创建的交互式表格,我们可在excel中创建透视表,也可编辑已有透视表.本文以创建透视表.刷新透视表以及设置透视表的行展开或折叠为例,介绍具体的操作方法. 所需工具:Free S ...
- Homekit_Dohome_智能灯带
简介:本款产品支持音乐律动控制,可以随音乐改换颜色及频率,可以使用Homekit或者Dohome或者遥控器进行有效控制,同时Dohome App已经对接了各大智能音箱,下载Dohome App后就可以 ...
- ElasticSearch在CentOS的安装
ElasticSearch在CentOS的安装 一.tar包安装 单机安装 创建elastic用户,ElasticSearch不支持root用户运行 useradd elastic 上传文件到 /so ...
- Java并发-Synchronized关键字
一.多线程下的i++操作的并发问题 package passtra; public class SynchronizedDemo implements Runnable{ private static ...
- 线段树(二)STEP
线段树(二) 线段树例题整理 Part 1:题面 传送门:https://www.luogu.com.cn/problem/P6492(靠之前传送门放错了,暴露了我在机房逛B站的事实-- Part 2 ...