NIO按行读取文件内容,并打印出来

来源:互联网 发布:量化交易数据 编辑:程序博客网 时间:2024/05/17 06:01
package com.broada.wssh.groovy;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class TestNio {public static void main(String args[]) throws Exception {int bufSize = 1200;File file = new File("E:\\monitor.log");FileInputStream fis = new FileInputStream(file);FileChannel fcin = fis.getChannel();ByteBuffer rBuffer = ByteBuffer.allocate(bufSize);String enterStr = "\n";try {StringBuffer strBuf = new StringBuffer("");int lineNum = 0;while (fcin.read(rBuffer) != -1) {int rSize = rBuffer.position();rBuffer.clear();String tempString = new String(rBuffer.array(), 0, rSize);if(fis.available() ==0){//最后一行,加入"\n分割符"tempString+="\n";}int fromIndex = 0;int endIndex = 0;while ((endIndex = tempString.indexOf(enterStr, fromIndex)) != -1) {String line = tempString.substring(fromIndex, endIndex);line = new String(strBuf.toString() + line);System.out.println("lineNum ="+ ++lineNum);System.out.println(line);strBuf.delete(0, strBuf.length());fromIndex = endIndex + 1;}if (rSize > tempString.length()) {strBuf.append(tempString.substring(fromIndex, tempString.length()));} else {strBuf.append(tempString.substring(fromIndex, rSize));}}} catch (IOException e) {e.printStackTrace();}System.out.print("OK!!!");}}


0 0
原创粉丝点击