现实中有时会遇到需要从文件末尾开始读取的例子,比如读取文件的最后一行之类的。
此时需要采用 RandomAccessFile 进行读取。
下面只是一个简单的倒序读取文件的示例,以供参考。此示例不考虑性能,只介绍RandomAccessFile 的使用方法。
import java.io.RandomAccessFile;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FromEndFileRead {
public static void main(String args[]) {
RandomAccessFile rf = null;
try {
rf = new RandomAccessFile("C:/net.log", "r");
long len = rf.length();
long nextend = len - 1;
String line;
rf.seek(nextend); //移动到文件最后
int c = -1;
while (nextend > 0) {
c = rf.read();
if (c == '\n' || c == '\r') {
line = rf.readLine();
if (line == null) {//处理文件末尾是空行的情况
nextend--;
rf.seek(nextend);
continue;
}
System.out.println(new String(line.getBytes("ISO-8859-1"), "GB2312")); //处理中文问题
nextend--;
}
nextend--;
rf.seek(nextend);
if (nextend == 0) {// 文件指针已退至开始处,输出第一行
System.out.println(new String(rf.readLine().getBytes("ISO-8859-1"), "GB2312")); //处理中文问题
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
rf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
本文将深入探讨如何使用VC++进行文件读写操作,特别是针对TXT文本文件。 首先,打开和关闭文件是文件操作的基础。在VC++中,我们可以使用标准库中的`fstream`类来实现。`fstream`提供了`ifstream`(输入文件流)和`...
- `dwMoveMethod`:移动方式,可以是`FILE_BEGIN`(从文件开头开始)、`FILE_CURRENT`(从当前位置开始)或`FILE_END`(从文件末尾开始)。 在VB6中处理大文件,通常采用以下步骤: 1. 打开文件:使用`FreeFile`...
### C语言中进行文件读写操作的关键知识点 #### 一、基本概念与原理 - **文件操作概述**:在C语言中,文件被视为一个字符流序列。文件操作主要包括打开(打开/创建)、读写以及关闭等步骤。 - **标准文件I/O函数库*...
// 从文件末尾的位置开始写入内容 _, err = f.WriteAt([]byte(content), n) if err != nil { return fmt.Errorf("写入文件时出错: %v", err) } return nil } func main() { err := appendToFile("example....
在计算机科学中,文件操作指的是对存储在磁盘上的数据文件进行读取、写入、删除或修改等操作。当涉及到向文件添加内容时,通常有两种场景:一种是在文件的开头或中间插入内容,另一种则是在文件的末尾追加内容。本篇...
通过文件读写,我们可以持久化程序产生的数据或者从外部读取数据供程序使用。本文将通过一个具体的示例来详细介绍如何在C语言中实现文件的读写操作。 #### 二、基础知识 在开始编写代码之前,我们需要了解一些基础...
3. `fread()`: 用于从文件中读取数据,参数包括文件指针、要读取的数据类型、元素个数和要读取的元素个数。 4. `fwrite()`: 相反,`fwrite()`用于向文件写入数据,参数与`fread()`类似。 5. `fprintf()` 和 `...
- STL容器如`vector`或`map`可以配合文件流进行序列化,将容器中的数据保存到文件或从文件恢复。 - `stringstream`也可以作为中间媒介,允许在内存中的字符串和磁盘文件之间转换数据。 8. **注意事项** - 文件...
- 描述:此函数从指定的文件流中读取最多`n-1`个字符,并将这些字符存放到由`s`指向的缓冲区中。 - 参数: - `s`:指向目标缓冲区的指针。 - `n`:缓冲区的最大长度。 - `stream`:文件指针。 - 返回值:如果...
在C语言中,进行文本文件的读写是编程的基础技能之一。C语言提供了标准库函数,如`fopen`, `fprintf`, `fscanf`, `fread`, `fwrite`, `fclose`等,用于处理文件操作。下面我们将详细探讨如何在C语言中进行TXT文件的...
综上所述,"ReadAndWriteFileDemo"这个示例可能包含了一个简单的Python脚本,演示了如何根据个人需求读取和写入文本文件。通过学习这个示例,我们可以掌握基础的文件操作技能,为后续更复杂的文件处理打下坚实的基础...
总的来说,VB提供了多种方式来读取不同类型的数据文件,从简单的文本文件到复杂的二进制资源文件,以及特定格式的配置文件。通过熟练掌握这些方法,开发者可以灵活地构建能够处理各种数据输入输出的应用程序。
它是从文件系统的一个文件中获得输入字节的方便方法。 2. **FileOutputStream**:用于写入原始字节流的输出流。它提供了向文件系统的一个文件写入字节的便利方法。 3. **BufferedInputStream** 和 **DataInputStream...
- `Scanner`可以从文件或标准输入读取数据。 - `hasNextLine()`检查是否还有下一行数据可供读取。 - `nextLine()`方法读取一行文本数据。 #### 二、二进制文件写入 Java还提供了多种方式来写入二进制文件,以下是一...
以下是一个使用`BufferedReader`读取文件的简单示例: ```java try (BufferedReader reader = new BufferedReader(new FileReader(file))) { String line; while ((line = reader.readLine()) != null) { System...
文件追加:使用"a"模式打开文件,在文件末尾追加新内容而不覆盖现有内容。 文件读取:使用"r"模式读取文件内容。如果文件不存在,会抛出FileNotFoundError异常。 逐行读取:利用for循环逐行读取文件内容。 使用...
以下是一个简单的示例,展示如何使用`BufferedReader`按顺序读取文件: ```java import java.io.*; public class BufferedReaderTest { public static void main(String[] args) { try { // 创建FileReader对象...
无论是存储数据、日志记录还是程序配置,都需要对文件进行读取或写入。本实例"实例70读写文件.rar"着重介绍了如何在编程中执行文件写入的操作,以及相关的文件读写知识。 首先,我们来看"写文件"这一主题。在编程中...