java从文件的指定行开始,从后往前找出最近的空行,用java
时间: 2023-06-09 21:08:50 浏览: 74
来实现如何?
可以使用Java中的RandomAccessFile类来实现这个功能。具体步骤如下:
1. 打开指定文件,创建RandomAccessFile对象。
2. 使用seek()方法定位到指定行位置,同时记录此位置。
3. 从此位置开始往前逐一读取每个字符,直到找到空行为止。
4. 如果一直找不到空行,一直往前读取到文件的开头。
5. 最后返回找到的空行位置即可。
下面是一个示例代码:
```java
import java.io.IOException;
import java.io.RandomAccessFile;
public class FindEmptyLine {
public static void main(String[] args) {
String filePath = "test.txt"; // 指定要查找的文件路径
int startLine = 10; // 指定要从文件的第几行开始查找
long position = -1; // 记录找到的空行位置,初始值为-1
try (RandomAccessFile raf = new RandomAccessFile(filePath, "r")) {
// 定位到指定行位置
long skipBytes = 0;
int currentLine = 1;
while (currentLine < startLine) {
if (raf.readLine() == null) {
break;
}
skipBytes = raf.getFilePointer();
currentLine++;
}
raf.seek(skipBytes);
// 从此位置开始往前逐一读取每个字符,直到找到空行为止
while (raf.getFilePointer() > 0) {
raf.seek(raf.getFilePointer() - 1);
char ch = (char) raf.readByte();
if (ch == '\n') {
position = raf.getFilePointer();
break;
}
}
// 如果一直找不到空行,一直往前读取到文件的开头
if (position == -1) {
raf.seek(0);
position = 0;
}
System.out.println("找到空行位置:" + position);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
注意事项:
1. 代码中使用了try-with-resource语法来自动关闭RandomAccessFile对象。
2. 如果文件不存在或指定行超出文件实际行数,则会直接输出“找到空行位置:0”。
3. 如果在读取过程中产生了IOException异常,则会直接输出异常信息并结束程序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)