使用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 ...
随机推荐
- 6、Java 运算符
Java运算符按功能可分为:算数运算符.关系运算符.逻辑运算符.位运算符.赋值运算符和条件运算符. 1.算数运算符 算术运算符包括通常的加(+).减(-).乘(*).除(/).取模(%),完成整数型和 ...
- 当你的系统依赖于某个bug...
标题粗略看是有点违反常识的,bug通常是指某些代码存在问题导致系统没有按照期望方式工作,应该是需要尽可能被修复的,这样系统才会正常工作.但是,开发实践中会发现在某些情况下,本来功能没有问题,在你信心满 ...
- 丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!
在前几天的文章<为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?>中,我曾经对几款属性拷贝的工具类进行了对比. 然后在评论区有些读者反馈说MapStruct才是真 ...
- 链表(python)
一.链表和数组 在编写代码中,我们储存的数据是存储于内存当中,内存就像一块块并列排序的小方盒,每个小方盒都有自己地址,我们储存的数据就在这样一个个小方盒当中. 这些数据存放的结构有两种基本方式,数组和 ...
- SpringBoot实现本地存储文件上传及提供HTTP访问服务
笔者计划为大家介绍分布式文件系统,用于存储应用的图片.word.excel.pdf等文件.在开始介绍分布式文件系统之前,为大家介绍一下使用本机存储来存放文件资源. 二者的核心实现过程是一样的: 上传文 ...
- bluecms v1.6 代码审计
0x01 使用seay源代码审计系统进行审计 扫描到了很多个可疑漏洞,不过工具都有一定的误报,下面我们就逐个进行验证 0x02 /ad_js.php SQL注入漏洞 查看源码,我们发现程序通过GET方 ...
- 对于python装饰器结合递归的进一步理解
对于python装饰器结合递归的进一步理解 代码如下: import functools def memoize(fn): print('start memoize') known = dict() ...
- SpringMVC常见问题Error configuring application listener of class org.springframework.web.context.ContextLoaderListenejava.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
六月 20, 2018 9:43:34 下午 org.apache.catalina.core.StandardContext listenerStart 严重: Error configuring ...
- MySQL空间函数实现位置打卡
项目需求是跟用户当前位置判断是否在给定的地理位置范围内,符合位置限制才可以打卡,其中的位置范围是一个或多个不规则的多边形.如下图,判断用户是在清华还是北大. 图形获取区域坐标 因为项目前端使用微信小程 ...
- FCIS:Fully Convolutional Instance-aware Semantic Segmentation
论文:Fully Convolutional Instance-aware Semantic Segmentation 目录 0.简介 1.Position-sensitive Score Map ...