java读取文件的最后一行|java快速读取日志文件最后一行数据日志文件非常大

『壹』 java读取txt读不到最后一行

public static void readtxt(File file) throws IOException {String encoding="UTF-8";InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);//考虑到编码格式BufferedReader bufferedReader = new BufferedReader(read);String data = null;while ((data = bufferedReader.readLine()) != null) {System.out.println(data);}read.close();}

『贰』 java如何高效读取文本的第N行和最后N行

一般的需求就用java的io 包里的 BufferedReader缓存一下,效率还算可以,更高的性能要求,读N行或后N行,可以看看java.nio包里的东西。下面是一个例子程序,给你参考一下(这里是读第N行的,读后N行的把第一个方法稍作修改即可,不举例了,呵呵):public class ReadSelectedLine { static void readLineVarFile(String fileName, int lineNumber) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader( new FileInputStream(fileName))); String line = reader.readLine(); if (lineNumber < 0 || lineNumber > getTotalLines(fileName)) { System.out.println("不在文件的行数范围之内。"); } int num = 0; while (line != null) { if (lineNumber == ++num) { System.out.println("line " + lineNumber + ": " + line); } line = reader.readLine(); } reader.close(); } // 文件内容的总行数。 static int getTotalLines(String fileName) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader( new FileInputStream(fileName))); LineNumberReader reader = new LineNumberReader(in); String s = reader.readLine(); int lines = 0; while (s != null) { lines++; s = reader.readLine(); } reader.close(); in.close(); return lines; } public static void main(String[] args) throws IOException { // 读取文件 String fileName = "d:/hst_23.txt"; // 获取文件的内容的总行数 int totalNo = getTotalLines(fileName); System.out.println("There are "+totalNo+ " lines in the text!"); // 指定读取的行号 int lineNumber = 10; //读取指定行的内容 readLineVarFile("d:/hst_23.txt", lineNumber); } }

『叁』 java中如何用readLine()读取最后一行并输出

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));while ((line = brCleanUp.readLine ()) != null){}System.out.println ("[输出] " + line );当while循环readLine出所有行结束时,最后一行的值就是line,这时候你输出line就可以了~while循环的这个过程是必须的,虽然while内部并未执行任何操作。

『肆』 java快速读取日志文件最后一行数据,日志文件非常大。

packagecn.com.songjy.test.io;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.RandomAccessFile;/***从最后一行开始读取*/publicclassFromEndRF{/****@paramfilename目标文件*@paramcharset目标文件的编码格式*/publicstaticvoidread(Stringfilename,Stringcharset){RandomAccessFilerf=null;try{rf=newRandomAccessFile(filename,"r");longlen=rf.length();longstart=rf.getFilePointer();longnextend=start+len-1;Stringline;rf.seek(nextend);intc=-1;while(nextend>start){c=rf.read();if(c==''||c==''){line=rf.readLine();if(line!=null){System.out.println(newString(line.getBytes("ISO-8859-1"),charset));}else{System.out.println(line);}nextend–;}nextend–;rf.seek(nextend);if(nextend==0){//当文件指针退至文件开始处,输出第一行//System.out.println(rf.readLine());System.out.println(newString(rf.readLine().getBytes("ISO-8859-1"),charset));}}}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}finally{try{if(rf!=null)rf.close();}catch(IOExceptione){e.printStackTrace();}}}publicstaticvoidmain(Stringargs[]){read("mynewfile.txt","UTF-8");}}

说明:以上是一个倒着读取文件的案例,可以根据此案例,结合自己的实际需求来设计自己的代码。另外,如果是web应用或其它持续型应用,可以尝试利用单独线程保持文件打开或将读取位置存储在内存中。

『伍』 java快速读取文本文件最后一行数据,文本文件非常大

用RandomAccessFile用seek(longpos)跳到最后一个字节,然后一个字节一个字节往回查,查到换行符为止。

『陆』 求java代码:获取文件内容的最后一行

(Filefile)throwsIOException{if(!file.exists()||file.isDirectory()||!file.canRead()){returnnull;}RandomAccessFileraf=null;try{raf=newRandomAccessFile(file,"r");longlen=raf.length();if(len==0L){return"";}else{longpos=len-1;while(pos>0){pos–;raf.seek(pos);if(raf.readByte()==''){break;}}if(pos==0){raf.seek(0);}byte[]bytes=newbyte[(int)(len-pos)];raf.read(bytes);returnnewString(bytes);}}catch(FileNotFoundExceptione){e.printStackTrace();}finally{if(raf!=null){try{raf.close();}catch(Exceptionea){ea.printStackTrace();}}}returnnull;

『柒』 Java中读取txt最后一行的内容..

package testfile;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.InputStreamReader;import java.util.ArrayList;public class TestFile {ArrayList<String> ar=new ArrayList<String>();public static void main(String[] args) {// TODO Auto-generated method stubTestFile t=new TestFile(); try {t.readFile("F://exe2.txt");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} public void readFile(String st) throws Exception{ File file=new File(st); FileReader fr=new FileReader(file); BufferedReader bw=new BufferedReader(fr); String str=null; while((str=bw.readLine())!=null){ ar.add(str); } for(int i=0;i<ar.size();i++){ System.out.println(ar.get(i)+"\n\r"); } }}读取最后一行只要取出 ar的最后一个值即可。。注意:你写的问题在于你一次while循环 bw读了两次。。。小括号里一次,大括号里一次。。

『捌』 java怎样修改文本文件的最后一行

你可以先定义一个inputstreamreader读取文本文件内容,然后再用一个linenumberreader获取刚才inputstreamreader的对象,linenumberreader里有个方法readline()是用来一行一行的顺序读取字符,然后用一个判断语句来判断你想修改的行,最后删除或修改就可以了

『玖』 java怎么直接读取txt的最后一行

publicclassTest{publicstaticvoidmain(String[]ages)throwsIOException{Filefile=newFile("test.txt");StringreadLastLine=readLastLine(file,"UTF-8");System.out.println(readLastLine);}(Filefile,Stringcharset)throwsIOException{if(!file.exists()||file.isDirectory()||!file.canRead()){returnnull;}RandomAccessFileraf=null;try{raf=newRandomAccessFile(file,"r");longlen=raf.length();if(len==0L){return"";}else{longpos=len-1;while(pos>0){pos–;raf.seek(pos);if(raf.readByte()==''){break;}}if(pos==0){raf.seek(0);}byte[]bytes=newbyte[(int)(len-pos)];raf.read(bytes);if(charset==null){returnnewString(bytes);}else{returnnewString(bytes,charset);}}}catch(FileNotFoundExceptione){}finally{if(raf!=null){try{raf.close();}catch(Exceptione2){}}}returnnull;}}

使用RandomAccessFile直接将指针移到文件最后一个字符开始读取,从后往前读取,当遇到第一换行符时结束


赞 (0)