java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件
我想使用java来读取weblogic日志文件,而weblogic正在将日志写入其中(缓冲),但我只想读取内容,当我开始阅读它时.
我怎样才能做到这一点 ?
public class DemoReader implements Runnable{
public void run() {
File f = new File ("c:\\test.txt");
long length = f.length();
long readedBytes = 0;
System.out.println(length);
try {
BufferedReader fr = new BufferedReader(new FileReader(f));
String line = "";
while((line = fr.readLine()) != null && readedBytes < length){
readedBytes += line.getBytes().length;
if(readedBytes > length){
break;
}else{
System.out.println(line);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最佳答案
只要日志文件仅被锁定以进行写访问,您应该能够像@ karim79建议的那样将其复制.之后,副本属于您,因此您可以随心所欲地做任何事情.
下面是一些应该实现您所需要的代码 – 它只是将文件逐字节复制到System.out流:
public class Main {
public static void main(String[] args) throws IOException {
// Identify your log file
File file = new File("path/to/your/logs/example.log");
// Work out the length at the start (before Weblogic starts writing again)
long size = file.length();
// Read in the data using a buffer
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
long byteCount=0;
int result;
do {
// Read a single byte
result = bis.read();
if (result != -1)
{
// Do something with your log
System.out.write(result);
} else {
// Reached EOF
break;
}
byteCount++;
} while (byteCount
你去吧
有关日志文件的说明
如果日志文件很大(例如> 1Gb),那么您应该考虑更改日志配置以合并滚动日志文件,该日志文件会自动将日志分解为块(例如1Mb),这些块更适合在shell编辑器中查看(像vim).
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件相关推荐
- java 实现文件下载保存框_Java开发网 - 任何类型的文件下载时都会弹出文件保存框的实现(原创)...
于 2002-12-12 11:09 :):):)任何类型的文件下载时都会弹出文件保存框的实现:(:(:( 简介: 从事WEB程序设计的朋友一定都遇到过这种情况吧,对于一些操作系统可以识别的文件类型如 ...
- Java使用FFmpeg(自定义cmd)系列之获取视频/音频时长(File文件方式)
ffmpeg系列 Java使用FFmpeg(自定义cmd) Java使用FFmpeg(自定义cmd)系列之获取视频/音频时长 Java使用FFmpeg(自定义cmd)系列之官方API获取视频/音频信息 ...
- java 不编译咋办_java – 为什么JVM不编译整个程序,而不是逐个编译?
他所说的是,在运行时将所有字节码编译成机器语言是不切实际的.您可以预先编译所有内容,但这并不是JIT所采用的方法. 一方面,不知道程序有多大.人们在30分钟的启动时会相当不高兴,因为它编译了可以找到的 ...
- java抽奖程序_java怎么做出简单的抽奖程序?实例代码展示
自从20世纪90年代以来,java编程语言的发展如火如荼,不仅仅应用于高新产业的壮大发展,还涉及到了我们的日常生活,为我们的生活带来了更多的便利与快捷方法.今天主要为大家介绍一下,如何用java做出一 ...
- Java初学者作业——实现控制台的猜数字游戏。游戏运行时产生一个1~100之间的随机数字
返回本章节 返回作业目录 需求说明: (1)实现控制台的猜数字游戏.游戏运行时产生一个1-100之间的随机数字 (2)要求用户从控制台输入数字,若输入的数字比随机数小,则输出"太小了,再大一 ...
- java io 读取多个对象_Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream详解...
有必要多看几遍的 关于字符和字节,例如文本文件,XML这些都是用字符流来读取和写入.而如RAR,EXE文件,图片等非文本,则用字节流来读取和写入. 读写对象,传输对象在Java中很常使用,在javaB ...
- java流程图表示输入 输出_Java IO基础总结
Java IO基础总结 Java中使用IO(输入输出)来读取和写入,根据数据走向可分为输入流和输出流,用户可以从输入流中中读取信息,但不能写它,相反,对输出流,只能往输入流写,而不能读它(输入流表示从 ...
- java格式错误什么意思_java.io.IOException可能的原因是什么:“文件名,目录名或卷标语法不正确”...
我试图使用以下代码复制一个文件: File targetFile = new File(targetPath + File.separator + filename); ... targetFile. ...
- java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...
我使用wait()和notify()机制学习了java中的多线程. 但我很好奇输出一个简单的多线程Java应用程序. 代码如下: class Q { int n; boolean valueSet = ...
最新文章
- 手把手教你深度学习强大算法进行序列学习(附Python代码)
- 谷歌浏览器mac_Mac用户浏览网页不可少的浏览器-谷歌Chrome
- Java黑皮书课后题第7章:**7.23(游戏:储物柜难题)一个学校有100个储物柜和100个学生。所有的储物柜在上学的第一天都是关着的。…在所有学生都经过教学楼并且改变柜子之后,哪些柜子是开着的?
- 关于报表中汇率转换的问题
- Java定义People类
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- 到底如何调用Async异步函数
- 忘记using namespace std;
- 【矩阵论 图论】期末考试复习思维导图
- Java基于springboot办公OA管理系统源码
- 12项目管理--项目采购管理
- 云服务器网站logo,云服务器 logo
- mysql 表分区修复,硬盘分区表损坏后的数据恢复方法
- apache启动失败原因
- P6974 [NEERC2015]Adjustment Office 题解
- php 检测是否是微信浏览器,PHP判断设备是否为微信浏览器或QQ浏览器
- 如何在虚拟一个USB设备
- linux下使用mail定时发送邮件-阿里企业邮箱发送
- Flowable入门系列文章11 - Flowable API 01
- linux定期清理日志脚本,一周清理一次
热门文章
- Jmeter(四十八)_动态线程分析HTML测试报告
- django 视图模式
- Net学习日记_ADO.Net_2_练习(treeView)
- Collections about Deep Learning
- Error:java: Compilation failed: internal java compiler error
- g++能过,c++过不了
- ZOJ 1242 Carbon Dating
- Hibernate缓存-使用Ehcache让实体对象集合对象缓存
- XAF 如何使用复合主键和复合外键
- JZOJ 3456. 【NOIP2013模拟联考3】恭介的法则(rule)