首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java使用Rand访问文件从文件中获取特定字符

Java使用Rand访问文件从文件中获取特定字符
EN

Stack Overflow用户
提问于 2017-02-16 01:36:50
回答 2查看 470关注 0票数 1

使用随机文件访问,读取每个记录的姓氏和主要内容,并将其写入顺序文件。在屏幕上显示这些记录。我被困的地方是试图让raf.seek只对某些字符停止,所以我知道要显示数据,我必须找到字符7-18和字符34-50。我也在想,如果我将该文件转换为字符串,是否会更容易呢?

示例数据文件

nnnnnnaaaaaaaaaaabbbbbbbbbbbb939ccccccccccccccccc

125546琼斯鲍勃045计算机科学

334535布朗史蒂夫023化学

227863 227863Finklestein 056历史

443456Howler Iain 038计算机科学

883643莫里森托尼045物理学

输出文件

琼斯计算机科学

棕色化学

芬克尔斯坦历史

咆哮者计算机科学

莫里森物理

屏幕还将显示:

琼斯计算机科学

棕色化学

芬克尔斯坦历史

咆哮者计算机科学

莫里森物理

以下是我到目前为止所拥有的:

代码语言:javascript
复制
import java.io.File;
import java.io.RandomAccessFile;
import java.io.IOException;

public class RandomAccessFileDemo {

    private static void doAccess() {

        try {

            File file = new File("myfile.txt");
            RandomAccessFile raf = new RandomAccessFile(file, "rw");

            // Read a character
            byte ch = raf.readByte();
            System.out.println("Read first character of file: " + (char)ch);
            System.out.println("Read full line: " + raf.readLine());
            raf.seek(4);
            System.out.println("Read line 4: " + raf.readLine());
            // Seek to the end of file
            raf.seek(file.length());

            // Append to the end of the file
            raf.write(0x0A);
            raf.writeBytes("This will complete the Demo");
            raf.close();

        } catch (IOException e) {
            System.out.println("IOException:");
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        doAccess();
    }

}
EN

回答 2

Stack Overflow用户

发布于 2017-02-16 01:54:09

System.out.println("Read full line: " + raf.readLine()); raf.seek(4); System.out.println("Read line 4: " + raf.readLine());

RandomAccessFile的搜索方法不按行数移动偏移量,而是以字节为单位移动偏移量。

以下是一份摘录:

seek.htm

pos --从文件开头开始测量的偏移位置(以字节为单位),用来设置文件指针的位置。

因此,您需要计算移动文件指针并读取记录的字节数。

我建议您在循环中使用readLine,并解析每一行以提取所需的数据。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2017-02-16 01:56:07

我认为您应该用while循环逐行读取文件(虽然文件没有结束,但请读下一行)。在每次迭代中,您可以将该行转换为string,然后对该行进行分析,并打印您感兴趣的内容。

这是一个典型的文件分析器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42263287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档