`
mozhenghua
  • 浏览: 323251 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读文件最后一行java

阅读更多

写了一个读文件最后一行的算法,主要思想是利用RandomAccessFile 这个类一开始先将文件的游标移动到文件最后一个字符,然后逐渐向文件头推进,一旦找到'/r'或者‘/n’的时候就将当前的游标记录下来,这个游标的位置就是文件最后一行的起始位置。

 

 这个方法的优点是在处理大文件的时候,效率会高一些。

 

 

/**
	 * 打印文件的最后n行内容
	 * @param monitorFile
	 * @param n
	 * @param lineProcess
	 */
	private void readLastNLine(File monitorFile, int n, IProcessLine lineProcess) {
		RandomAccessFile randomAccess = null;
		try {
			randomAccess = new RandomAccessFile(monitorFile, "r");

			// boolean eol = false;
			// int c = -1;
			long fileLength = randomAccess.length();
			long size = 1;
			boolean hasEncountReturn = false;

			ww: while (true) {
				long offset = fileLength - (size++);
				if (offset < 0) {
					break ww;
				}
				randomAccess.seek(offset);
				switch (// c =
				randomAccess.read()) {
				case '\n':
				case '\r':
					if (!hasEncountReturn && (n--) <= 0) {
						randomAccess.seek(offset + 1);
						break ww;
					}
					hasEncountReturn = true;
					continue;
				default:
					hasEncountReturn = false;
				}
			}
			String line = null;
			while ((line = randomAccess.readLine()) != null) {
				// listener.handle(line);
				lineProcess.print(line);
			}

		} catch (Exception e) {
			throw new RuntimeException(e);
		} finally {
			IOUtils.closeQuietly(randomAccess);
		}
	}

	private interface IProcessLine {
		void print(String line);
	}

 

分享到:
评论

相关推荐

    java如何读取文件

    在Java编程语言中,读取文件是一项常见的操作,尤其是在处理数据、日志文件或配置信息时。本文将详细解析如何使用Java读取文本文件,基于提供的代码示例,深入探讨其工作原理及最佳实践。 ### Java读取文本文件的...

    java 删除某行和读写txt文件

    为了提高性能和易用性,通常会在这个`FileReader`的基础上创建一个`BufferedReader`对象,这样可以逐行读取文件内容。 ```java FileReader fr = new FileReader("./a.txt"); BufferedReader br = new ...

    Java 读取PDF文件

    在Java编程环境中,读取PDF文件是一项常见的任务,特别是在开发桌面应用或需要处理PDF文档内容时。本篇文章将深入探讨如何使用Java来读取PDF文件,并将其内容展示在一个由JFrame和JPanel构建的GUI窗口中。 首先,...

    Java写入大数据文件

    WriteData方法使用FileWriter和BufferedWriter来写入文件,每次写入一行数据,并使用Random对象生成随机数作为写入数据。 接下来,程序使用sqlitFileDate方法将大数据文件切分到十个小文件中,每个小文件的路径将...

    java使用javacsv读取csv文件 导入Mysql数据库

    最后,将读取CSV文件和插入数据的过程结合起来,遍历CSV文件中的所有行,对每一行调用`importCSVToDatabase()`函数: ```java public static void main(String[] args) { // ... while ((record = reader.read...

    java算法,从txt文件中读取数据录入mysql

    `BufferedReader`适用于大文件,因为它可以一次性读取一行,而`Scanner`则适合逐字符或逐词读取。 2. **字符串处理**:`StringToDB.java`可能是将读取到的文本内容转化为数据库可接受的格式的类。在处理TXT文件内容...

    java利用jxl读取excel文件

    例如,获取第一行第一列的单元格内容: ```java Cell cell = sheet.getCell(0, 0); String cellValue = cell.getContents(); ``` 5. **处理数据**:根据业务需求,你可以对读取到的数据进行各种操作,如存储到数据库...

    Java基于IO流读取文件的方法

    在循环中,每次调用`br.readLine()`都会返回一行内容,直到文件结束。如果返回`null`,表示已到达文件末尾。内容会被添加到`StringBuffer`对象`sb`中,以便后续处理。 最后,将`StringBuffer`转换为`String`对象,...

    javaIO简单的写入读取文件

    JavaIO简单的写入读取文件 javaIO简单的写入读取文件是Java编程语言中最基本的文件操作。下面我们将详细介绍javaIO简单的写入读取文件的知识点。 一、 文件写入 文件写入是指将数据从程序中写入到文件中。Java中...

    java读取xls文件

    本示例主要关注如何使用Java来读取.xls格式的文件,这是一种Microsoft Excel的早期版本格式。以下是一个简单的Java代码示例,演示了如何读取.xls文件。 首先,为了在Java中操作Excel文件,我们需要引入Apache POI库...

    Java中读取文件的方法大全

    最后,随机读取文件内容适用于需要在文件的任意位置开始读取的情况。可以使用`RandomAccessFile`类来实现这一功能: ```java public static void readFileRandomly(String fileName) { RandomAccessFile ...

    编写程序,该程序实现打开一个文本文件,每次读取一行内容,将每行作为一个字符串读入,并将字符串输出显示到屏幕上。

    在Java编程语言中,打开和读取文本文件是一项基本任务,尤其对于初学者而言,这是理解文件I/O操作的关键步骤。下面我们将详细讲解如何编写一个Java程序,实现打开文本文件,逐行读取内容并将其作为字符串显示在屏幕...

    Java读取文件并对其排序后重新写入文件

    在Java编程中,读取文件、对数据进行排序并重新写入文件是常见的操作,尤其在数据处理和分析场景中。下面将详细讲解这个过程,包括相关知识点和具体实现。 首先,我们需要导入Java的`java.io`包,该包包含了处理...

    java 将一个二维数组存到txt文件里,然后再读取

    - 对每一行使用`split("\t")`方法按制表符分割字符串,得到一个包含所有列值的字符串数组。 - 遍历字符串数组,使用`Double.parseDouble()`方法将字符串转换为`double`类型的数据,并填充到新定义的二维数组`arr2`...

    java读取excel文件生成矩阵

    在Java编程中,读取Excel文件并生成矩阵是一项常见的任务,尤其在数据分析、报表处理或者数据导入导出的场景下。Excel文件通常用于存储结构化的表格数据,而矩阵则是一种有效的数据表示方式,便于计算和分析。下面...

    java读取txt文档的

    `BufferedReader`内部维护了一个字符缓冲区,可以一次读取一行数据,大大减少了磁盘I/O次数。 ```java BufferedReader bufferedReader = new BufferedReader(read); ``` ### 六、逐行读取文件内容 利用`...

    java读取txt文件代码

    1. **导入必要的包**:如`java.io.BufferedReader`, `java.io.FileReader`, `java.io.IOException`等,这些类提供了读取文件的功能。 2. **创建文件对象**:使用`File`类创建一个指向TXT文件的`File`对象。 3. **...

    JAVA写的读取ini文件

    对于INI文件,我们需要解析每一行,识别键值对和分段,这通常涉及到字符串分割和正则表达式。 最后,压缩包子文件的文件名称为"java读取INI文件",这可能是项目源代码或示例程序的打包。如果要实现上述功能,可能...

    java读取文件内容的函数

    每读取一行,就追加到`StringBuffer`对象中,最后将`StringBuffer`转换为字符串并返回。 4. **处理异常**:在读取过程中,可能会抛出`IOException`,函数对此进行了捕获,并输出错误信息。 5. **返回结果**:无论...

    java创建TXT文件并进行读、写操作(代码)

    以下代码展示了如何替换文件中的第一行: ```java public static void replaceTxtByStr(String oldStr, String replaceStr) { String temp; try { File file = new File(path); FileInputStream fis = new ...

Global site tag (gtag.js) - Google Analytics