Java使用Rand Access文件从文件中获取特定字符
使用随机文件访问,读取每条记录的姓氏和主修科目,然后写入顺序文件。在屏幕上显示这些记录。我陷入困境的地方是试图获得英国皇家空军。寻求只在某些字符上停止,以便我知道要显示数据,我必须找到字符7-18和字符34-50。我还想知道如果我把那个文件转换成一个字符串是否会更容易 示例数据文件 nnnnnnaaaaaaaaaaaabbbbbbbb939cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 125546Jones Bob 045计算机科学Java使用Rand Access文件从文件中获取特定字符,java,Java,使用随机文件访问,读取每条记录的姓氏和主修科目,然后写入顺序文件。在屏幕上显示这些记录。我陷入困境的地方是试图获得英国皇家空军。寻求只在某些字符上停止,以便我知道要显示数据,我必须找到字符7-18和字符34-50。我还想知道如果我把那个文件转换成一个字符串是否会更容易 示例数据文件 nnnnnnaaaaaaaaaaaabbbbbbbb939ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
334535布朗-史蒂夫023化学
227863芬克尔斯坦红056历史
443456 Howler Iain 038计算机科学
883643莫里森托尼045物理学 输出文件 琼斯计算机科学 棕色化学 芬克尔斯坦历史 霍勒计算机科学 莫里森物理学 屏幕还将显示: 琼斯计算机科学 棕色化学 芬克尔斯坦历史 霍勒计算机科学 莫里森物理学 以下是我到目前为止的情况:
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();
}
}
RandomAccessFile
的seek方法不会按移动的行数移动偏移量(以字节为单位)
以下是摘录自:
pos——从文件开头开始以字节为单位的偏移位置,用于设置文件指针
因此,您需要计算移动文件指针的字节数,然后读取记录
我建议您在循环中使用readLine
,并解析每一行以提取所需的数据
希望这有帮助 我认为您应该使用while循环逐行读取文件(当您无法获得文件结尾时,请阅读下一行)。在每次迭代中,您可以将该行转换为字符串,然后分析该行并打印您感兴趣的内容 这是一个典型的文件分析器。
raf.seek(4);System.out.println(“读取第4行:+raf.readLine())代码>失败
System.out.println("Read full line: " + raf.readLine());
raf.seek(4);
System.out.println("Read line 4: " + raf.readLine());