`
104zz
  • 浏览: 1508420 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

java中从末行逐行向上读取文件

 
阅读更多

/**************
      * Test
      * 
      * @param args
 */
     public static void main(String[] args) {
         try {
             // 下面是先写文件, 向文件尾追加, 若文件不存在则自动创建文件
             FileWriter fw = new FileWriter("C:/test.txt", true); // 用FileWriter打开文件
             PrintWriter pw = new PrintWriter(fw); // 用写指针加载文件
             String[] str = { "" }; // 要写入的字符串
             for (String index : str) {
                 pw.println(index); // 每次都向文件尾追加
             }
             pw.close(); // 关闭
             fw.close(); // 关闭
 
 // 下面定位文件末行, 一行一行向上读取
             RandomAccessFile raf = new RandomAccessFile("C:/test.txt", "r"); // 该类可以定位文件,
 // 是java
 // IO类中唯一可以用来定位的
             long len = raf.length(); // 获得文件的长度,以便定位末尾
             if (len <= 3) { // 判断文件是否为空
                 System.out.println("the flie is NULL!");
                 return;
             }
             long pos = len - 1; // 定位文件尾
             while (pos > 0) { // 判断文件是否到达头
                 --pos; // 一个字符一个字符的向前移动指针
                 raf.seek(pos); // 定位文件指针所指的位置
                 if (raf.readByte() == '\n') { // 如果是换行符,就可以读取该行了
                     System.out.println(raf.readLine());
                 }
             }
             raf.seek(pos); // 最后还需要读取第一行
             System.out.println(raf.readLine());
             raf.close(); // 关闭
 
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
         System.exit(0);
         return;
     }
 
分享到:
评论

相关推荐

    JAVA BMP解码 超详细解释

    - 从文件中按行反序读取像素数据,根据颜色深度转换为RGB值。 - 将像素数据存储到数组中,准备用于绘制或进一步处理。 在JAVA中,可以使用`java.io`和`java.nio`包中的类进行文件操作,以及`java.awt.image`包中...

    CMM解释器java版语法分析器

    解释器则逐行读取、解释和执行代码,因此它们通常用于动态语言,如Python和JavaScript。 在这个Java版本的CMM解释器中,CMM可能代表了一种特定的编程语言或者简化版的语法模型,用于教学目的。语法分析器是解释器的...

    BMP文件处理

    5. 从文件中读取像素数据,注意行序和颜色顺序。 三、BMP文件显示 在嵌入式系统中,显示BMP文件通常涉及到与硬件接口,例如LCD控制器。这需要将解析出的像素数据转化为适合硬件显示的格式,可能涉及颜色空间转换、...

    编译原理java实现所需jar包-个人博客文章配套资源

    解释器逐行读取并执行字节码,适合于快速启动和简单的应用。 通过上述步骤,我们能够理解如何使用Java实现一个编译器或解释器的基础架构。这些知识不仅对学习编译原理至关重要,也是软件工程中进行语言处理、工具...

    BMP.zip_从BMP图像中截取部分图片

    由于BMP文件以行优先的方式存储,我们需要从底部向上读取,以保持图像的正确方向。对于每个像素,根据色彩位数(8位灰度、24位RGB等)读取相应的字节数,并存储到新的缓冲区。 ```java // 截取区域 int x1, y1, x2,...

    Android 解析xml文件

    2. **SAX解析器**:Simple API for XML(SAX)解析器采用事件驱动模型,逐行读取XML文件,遇到元素、属性等时触发相应的回调函数,不会一次性加载整个文件,适合处理大文件。 3. **Pull解析器**:类似于SAX解析器,...

    java写的--CMM语言解释器

    解释器是一种能直接执行源代码的程序,它不生成目标代码,而是逐行地读取、解析并执行代码。与之相比,编译器则是将源代码转换成可执行的目标代码,然后运行目标代码。在这个项目中,CMM解释器直接执行CMM语言的源...

    根据bmp格式读图

    - 然后是图像数据在文件中的偏移量,通常包括文件头和信息头的大小,用于告诉程序从哪里开始读取像素数据。 2. **信息头** (Info Header): - 信息头的大小可以有多种,常见的如14字节的OS/2 BMP或40字节的...

    24位bmp转换成灰度图

    2. 分析图像数据:BMP图像数据以行优先的方式存储,从图像底部的左上角开始,逐行向上读取。每行数据以字节块为单位,每个像素占用3个字节(RGB)。 3. 应用灰度转换算法:对于每个像素,我们提取R、G、B三个通道的...

    Android SAX、DOM、Pull解析xml文件案例讲解

    它不会一次性加载整个XML文档到内存,而是逐行读取,当遇到特定元素时触发回调函数。这种方式节省了内存,适用于处理大型XML文件。以下是使用SAX解析XML的基本步骤: - 创建`DefaultHandler`子类,重写关键方法如`...

    sax标准解析XML

    SAX是一种基于事件驱动的解析模型,它不将整个XML文档加载到内存中,而是逐行读取,遇到元素、属性等结构时触发相应的事件,通过回调函数进行处理。这种方式节省了内存,适合处理大文件,但编程相对DOM更复杂,因为...

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

    Java 中可以使用 `Math` 类来进行各种数学运算,如取整、向上取整等。 **详细说明:** `Math` 类是 Java 标准库中的一个重要组成部分,提供了大量用于执行数学运算的方法。例如,`Math.ceil()` 方法用于返回不小于...

    unit-8-lab-2-saahilkakaria:由GitHub Classroom创建的unit-8-lab-2-saahilkakaria

    3. **垂直翻转算法**: 垂直翻转图像的基本思想是从原始图像的底部开始,逐行向上复制像素到新图像中。这可以通过遍历图像的每一行,然后从下至上读取像素并设置到新图像中来实现。代码可能如下: ```java int ...

    编译原理实验三

    在实验中,你可能设计了一个简单的解释器,它逐行读取源代码,通过AST进行语义分析,并执行相应操作。解释器的实现通常涉及符号表管理、类型检查和错误处理。 **四、整合与运行** 实验的最后部分是将词法分析器、...

    Android面试题带答案.doc

    这是一种事件驱动的解析方式,逐行读取,适合处理大文件。 9. **自定义style**: - 正确的方式是(A):在资源文件中定义style时,应该包含`&lt;style name="myStyle"&gt;`标签,并在其中定义`&lt;item&gt;`。 10. **Menu使用**...

    Andorid笔试题完整版

    SAX解析器逐行读取XML文件,不加载整个文档到内存,因此占用资源少,适合处理大型XML文件。选项B正确,A和C描述的是DOM解析器的特点,而D是SAX解析器的一个缺点,数据不是持久的。 9. 自定义Style: 正确的自定义...

    安卓面试题2

    与DOM解析相比,SAX不需要一次性加载整个XML文档到内存中,而是逐行读取并处理。这种方式适用于大型文档的解析,能够节省内存资源。 ### 自定义样式 **问题9:** 下面的对自定义style的方式正确的是 - **选项A:** ...

    android面试题带答案

    它采用拉模式解析,即逐行读取并解析XML文件,不需要构建完整的DOM树,因此节省了内存空间。SAX不支持随机访问,适用于处理大数据量的解析任务。因此,本题正确答案是B。 ### 9. Android中定义样式的方式 - **题目...

    Android 70道面试题

    8. **XML解析**:SAX解析器是一种基于事件驱动的解析方式,它不会一次性加载整个XML文档到内存,而是逐行读取,节省资源。选项B描述了SAX的优点,而A和C是DOM解析器的特点,D是关于SAX的一个潜在缺点,但不是优点。 ...

Global site tag (gtag.js) - Google Analytics