qq_28710355 2017-04-29 13:28 采纳率: 0%
浏览 981

java读取日志文件,遇到读出空字符串问题

我从网上找了个倒序读取文件的代码,我自己测试读自己创建的文件,可以读出内容,但是读真正生成的日志文件,读出的都是空字符串,程序没有报错。
个人测试了应该是和文件内容有关,但找不出原因所在,代码如下:
package cn.cmts.control.util;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

/**

  • http://bbs.csdn.net/topics/190181198 从最后一行开始读取
    /
    public class test {
    /
    *
    *

    • @param filename
    • 目标文件
    • @param charset
    • 目标文件的编码格式 */ public static void read(String filename, String charset) { RandomAccessFile rf = null; try { rf = new RandomAccessFile(filename, "r"); long len = rf.length(); long start = rf.getFilePointer(); long nextend = start + len - 1; String line; rf.seek(nextend); int c = -1; int count =0; while (nextend > start) { c = rf.read(); if (c == '\n' || c == '\r') { line = rf.readLine(); if (line != null) { String info = new String(line.getBytes("ISO-8859-1"), charset); count+=1; System.out.println(count); if (info.contains("是的")) { System.out.println(count+":::"+new String(line.getBytes("ISO-8859-1"), charset)); break; } if (count>100) { break; } } else { System.out.println(line); } nextend--; } nextend--; rf.seek(nextend); if (nextend == 0) {// 当文件指针退至文件开始处,输出第一行 // System.out.println(rf.readLine()); System.out.println(new String(rf.readLine().getBytes("ISO-8859-1"), charset)); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (rf != null) rf.close(); } catch (IOException e) { e.printStackTrace(); } } }

    public static void main(String args[]) throws FileNotFoundException {
    read("e:\apache-tomcat-8.5.13-windows-x64\apache-tomcat-8.5.13\logs\localhost_access_log.2017-04-21.txt", "GB2312");
    }
    }

  • 写回答

1条回答 默认 最新

  • devmiao 2017-04-29 15:56
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错