`

java 倒序读取文件(最后一行开始读取)

    博客分类:
  • Java
阅读更多
package cn.com.songjy.test.io;

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

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

	/**
	 * 
	 * @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;
			while (nextend > start) {
				c = rf.read();
				if (c == '\n' || c == '\r') {
					line = rf.readLine();
					if (line != null) {
						System.out.println(new String(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(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[]) {
		read("mynewfile.txt", "UTF-8");
	}
}



引自:http://bbs.csdn.net/topics/190181198
分享到:
评论

相关推荐

    java实现倒序读取文件功能示例分享

    在Java编程中,倒序读取文件是一种常见的需求,例如在日志分析或者处理大量文本数据时。本示例将详细介绍如何使用Java实现这一功能,同时提供了一个实用的`FileUtil`工具类作为参考。 首先,`FileUtil`类包含两个...

    JAVA设计文本文件读取倒序排序

    在这个程序中,`java.io.File`类用于表示文件对象,`java.io.FileInputStream`和`java.io.InputStreamReader`用来读取文件内容,而`BufferedReader`则用于按行读取文本。 2. **JFileChooser控件**:这是Java Swing...

    Java程序读取服务器端数据文件的解决方法及比较

    - 从标准输入流中读取一行数据。 - 如果没有读到数据结束标志,则继续处理。 - 如果不是数据间隔标志,则采用Float.valueOf方法生成一个临时Float对象。 - 将临时对象存入相应的数据数组中。 2. **二进制文件...

    按文件读取BMP位图

    1. **打开文件**:使用编程语言(如C++、Python或Java)的文件操作函数打开BMP文件。 2. **读取文件头**:BMP文件头包含两个部分:BITMAPFILEHEADER(BFH)和BITMAPINFOHEADER(BIH)。BFH包含文件的基本信息,如...

    java实现等腰输出杨辉三角

    杨辉三角的第0行只有一个数字1,从第1行开始,每一行的第0个和最后一个元素都是1,其余元素是上一行相邻两个元素之和。 ```java for (int i = 0; i ; i++) { triangle[i][0] = 1; if (i > 0) { triangle[i][i] =...

    hzk16 12864 java_JAVA点阵_12864hzk16_HZK16JAVA_

    标题“hzk16 12864 java_JAVA点阵_12864hzk16_HZK16JAVA_”暗示了我们正在讨论一个与Java编程语言相关的项目,该项目涉及到HZK16字体编码和12864像素分辨率的点阵显示器。 HZK16是汉字的点阵字体编码之一,它将每个...

    开发资源文档

    因为BMP文件每一行的字节数必须是4的倍数,如果不足则会填充额外的字节。代码中通过 `If...Then...End If` 结构检查是否需要进行填充字节的读取,以确保数据的完整性。 #### 5. 显示图片 最后,通过 `Picture1.PSet...

    BMP解析的详细讲解,是新手就来看看吧!

    需要注意的是,由于BMP文件的顶部是图像的最后一行,因此在读取时通常需要倒序处理。 解析BMP文件的过程包括以下步骤: 1. 检查文件头,确认是否为BMP文件。 2. 读取信息头,获取图像的宽、高、颜色深度等信息。 3...

    java 将一个数组逆序输出的方法

    在这段代码中,`Arrays.reverse(array)`一行就完成了数组的逆序操作,然后使用增强的`for`循环打印数组。 总之,Java中实现数组逆序输出的方法有很多种,可以根据具体需求选择合适的方法。无论是通过循环遍历还是...

    BMP连接,两张图变成一张

    对于单色8位BMP,数据是一字节一行,每一字节代表一个像素。 3. **合并图像**:将两个图像的数据按照预定的方式(例如水平或垂直拼接)组合在一起。这一步可能涉及创建一个新的缓冲区来存储合并后的图像数据。 4. **...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例245 读取XML文件属性 310 第3篇 窗体与控件应用 第11章 窗体设计 314 11.1 设置窗体位置 315 实例246 控制窗体加载时的位置 315 实例247 设置窗体在屏幕中的位置 315 实例248 从上次关闭位置启动窗体 316 实例...

    java数字排序和字母排序

    System.out.println("输入一行字符串:"); String name = input.next(); String name1 = ""; // 字符串逆序 for (int i = name.length(); i > 0; i--) { name1 += name.substring(i - 1, i); } // 输出...

    Java技术专家笔试题.pdf

    - 需要编写代码读取指定格式的日志文件,可以使用文件I/O操作或高级库如Apache Commons IO。 - 解析日志行时,需要按照提供的格式分割字符串,提取出时间、日志级别和消息内容等字段。 2. **异常信息提取:** - ...

    2005二级Java试题[借鉴].pdf

    `while`循环通常基于某个条件判断,而`for`循环常用于已知循环次数的情况,或者初始化、条件检查和迭代都在一行完成的情况。两者可以互换,但循环体不能为空。 4. **异常处理**:异常是程序执行期间出现的非正常...

    2021-2022计算机二级等级考试试题及答案No.10770.docx

    14. 文件读取:使用BufferedReader的readLine()方法可以一次性读取一行数据。 15. Swing组件:Swing是在AWT基础上构建的新图形界面系统,提供了AWT的功能,且组件由Java代码实现,不是重量级组件。 16. 线程生命...

    图像的格式转换 主要是jpg转bmp

    5. **像素数据重组**:JPEG压缩的数据是以行优先的方式存储,而BMP则是以倒序行(从底部到顶部)的方式存储。因此,解码后的像素数据需要重新排列。 6. **编码并保存为BMP**:最后,重组后的像素数据按照BMP文件...

    Oralec,mysql数据库基础知识小结

    根据给定文件的信息,我们可以提炼出关于Oracle与MySQL数据库的基础知识和特定的Oracle PL/SQL编程概念。以下是对这些知识点的详细阐述: ### Oracle数据库基础知识 #### 1. Oracle SQL语句与序列(Sequence) - ...

Global site tag (gtag.js) - Google Analytics