使用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 ...
随机推荐
- C#LeetCode刷题-设计
设计篇 # 题名 刷题 通过率 难度 146 LRU缓存机制 33.1% 困难 155 最小栈 C#LeetCode刷题之#155-最小栈(Min Stack) 44.9% 简单 173 二叉搜索 ...
- C#LeetCode刷题之#599-两个列表的最小索引总和(Minimum Index Sum of Two Lists)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3802 访问. 假设Andy和Doris想在晚餐时选择一家餐厅,并 ...
- RoBERTa:一个调到最优参的BERT
RoBERTa: A Robustly Optimized BERT Pretraining Approach. Yinhan Liu, Myle Ott, Naman Goyal, et al. 2 ...
- 【工具】OSS阿里云存储服务--超级简单--个人还是觉得Fastdfs好玩
介绍 阿里云对象存储服务(Object Storage Service,简称 OSS)为您提供基于网络的数据存取服务. 使用 OSS,您可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种 ...
- Mybatis-03-日志
日志 1 日志工厂 如果一个数据库操作,出现了异常,需要排错,此时需要日志. 曾经:sout debug 现在:日志工厂 logImpl SLF4J/log4j(掌握)/log4j2 设置中可以设定日 ...
- java jsp实现网络考试系统(mysql)
java网络考试系统 功能:可进行学生.管理员登录,学生考试.管理员出卷.列表分页 @ 目录 java网络考试系统 实现效果 主要代码实现 写在最后 实现效果 主要代码实现 package cn.it ...
- 调试tomcat9.0.19源码
本文所用到的环境: IntelliJ IDEA Apache Maven 3.3.9 jdk1.8 1. 查看Tomcat版本 $TOMCAT_HOME\bin\version.bat D:\Prog ...
- 用终端命令行(BASH)将本地项目上传到Github并提交代码
第一步: 在Github上创建自己的repository 第二步:建立本地仓库cd到你的本地项目根目录下,执行git命令 1:$ cd 到你的项目目录下 2:$ git init 第三步:将本地项目工 ...
- HM16.0之帧内模式——xCheckRDCostIntra()函数
参考:https://blog.csdn.net/nb_vol_1/article/category/6179825/1? 1.源代码: Void TEncCu::xCheckRDCostIntra( ...
- 牛客网PAT练习场-有几个PAT
题目地址:https://www.nowcoder.com/pat/6/problem/4066 题意:求pat->求pa->求p /** * *作者:YCute *时间:2019-12- ...