/**************
* 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;
}
分享到:
相关推荐
- 从文件中按行反序读取像素数据,根据颜色深度转换为RGB值。 - 将像素数据存储到数组中,准备用于绘制或进一步处理。 在JAVA中,可以使用`java.io`和`java.nio`包中的类进行文件操作,以及`java.awt.image`包中...
解释器则逐行读取、解释和执行代码,因此它们通常用于动态语言,如Python和JavaScript。 在这个Java版本的CMM解释器中,CMM可能代表了一种特定的编程语言或者简化版的语法模型,用于教学目的。语法分析器是解释器的...
5. 从文件中读取像素数据,注意行序和颜色顺序。 三、BMP文件显示 在嵌入式系统中,显示BMP文件通常涉及到与硬件接口,例如LCD控制器。这需要将解析出的像素数据转化为适合硬件显示的格式,可能涉及颜色空间转换、...
解释器逐行读取并执行字节码,适合于快速启动和简单的应用。 通过上述步骤,我们能够理解如何使用Java实现一个编译器或解释器的基础架构。这些知识不仅对学习编译原理至关重要,也是软件工程中进行语言处理、工具...
由于BMP文件以行优先的方式存储,我们需要从底部向上读取,以保持图像的正确方向。对于每个像素,根据色彩位数(8位灰度、24位RGB等)读取相应的字节数,并存储到新的缓冲区。 ```java // 截取区域 int x1, y1, x2,...
2. **SAX解析器**:Simple API for XML(SAX)解析器采用事件驱动模型,逐行读取XML文件,遇到元素、属性等时触发相应的回调函数,不会一次性加载整个文件,适合处理大文件。 3. **Pull解析器**:类似于SAX解析器,...
解释器是一种能直接执行源代码的程序,它不生成目标代码,而是逐行地读取、解析并执行代码。与之相比,编译器则是将源代码转换成可执行的目标代码,然后运行目标代码。在这个项目中,CMM解释器直接执行CMM语言的源...
- 然后是图像数据在文件中的偏移量,通常包括文件头和信息头的大小,用于告诉程序从哪里开始读取像素数据。 2. **信息头** (Info Header): - 信息头的大小可以有多种,常见的如14字节的OS/2 BMP或40字节的...
2. 分析图像数据:BMP图像数据以行优先的方式存储,从图像底部的左上角开始,逐行向上读取。每行数据以字节块为单位,每个像素占用3个字节(RGB)。 3. 应用灰度转换算法:对于每个像素,我们提取R、G、B三个通道的...
它不会一次性加载整个XML文档到内存,而是逐行读取,当遇到特定元素时触发回调函数。这种方式节省了内存,适用于处理大型XML文件。以下是使用SAX解析XML的基本步骤: - 创建`DefaultHandler`子类,重写关键方法如`...
SAX是一种基于事件驱动的解析模型,它不将整个XML文档加载到内存中,而是逐行读取,遇到元素、属性等结构时触发相应的事件,通过回调函数进行处理。这种方式节省了内存,适合处理大文件,但编程相对DOM更复杂,因为...
Java 中可以使用 `Math` 类来进行各种数学运算,如取整、向上取整等。 **详细说明:** `Math` 类是 Java 标准库中的一个重要组成部分,提供了大量用于执行数学运算的方法。例如,`Math.ceil()` 方法用于返回不小于...
3. **垂直翻转算法**: 垂直翻转图像的基本思想是从原始图像的底部开始,逐行向上复制像素到新图像中。这可以通过遍历图像的每一行,然后从下至上读取像素并设置到新图像中来实现。代码可能如下: ```java int ...
在实验中,你可能设计了一个简单的解释器,它逐行读取源代码,通过AST进行语义分析,并执行相应操作。解释器的实现通常涉及符号表管理、类型检查和错误处理。 **四、整合与运行** 实验的最后部分是将词法分析器、...
这是一种事件驱动的解析方式,逐行读取,适合处理大文件。 9. **自定义style**: - 正确的方式是(A):在资源文件中定义style时,应该包含`<style name="myStyle">`标签,并在其中定义`<item>`。 10. **Menu使用**...
SAX解析器逐行读取XML文件,不加载整个文档到内存,因此占用资源少,适合处理大型XML文件。选项B正确,A和C描述的是DOM解析器的特点,而D是SAX解析器的一个缺点,数据不是持久的。 9. 自定义Style: 正确的自定义...
与DOM解析相比,SAX不需要一次性加载整个XML文档到内存中,而是逐行读取并处理。这种方式适用于大型文档的解析,能够节省内存资源。 ### 自定义样式 **问题9:** 下面的对自定义style的方式正确的是 - **选项A:** ...
它采用拉模式解析,即逐行读取并解析XML文件,不需要构建完整的DOM树,因此节省了内存空间。SAX不支持随机访问,适用于处理大数据量的解析任务。因此,本题正确答案是B。 ### 9. Android中定义样式的方式 - **题目...
8. **XML解析**:SAX解析器是一种基于事件驱动的解析方式,它不会一次性加载整个XML文档到内存,而是逐行读取,节省资源。选项B描述了SAX的优点,而A和C是DOM解析器的特点,D是关于SAX的一个潜在缺点,但不是优点。 ...