当前,我正在用Java编写一个基本的十六进制编辑器。我完成的部分如下:
用户在要加载的二进制文件中键入要导航到的字节位置。它首先读取文件,然后使用AList进行存储。这是代码:
System.out.println("Enter name of file: ");
String filename = in.nextLine();
File file = new File(filename);
if (file.exists()) {
System.out.println(file.getAbsoluteFile());
RandomAccessFile raf = new RandomAccessFile(file, "r");
System.out.println("Size: " + file.length() + " bytes.");
System.out.println("Attempting to record file to AList");
AList<Byte> fileList = new AList<>();
raf.seek(0);
for (int i = 0; i < raf.length(); i++) {
fileList.add(raf.readByte());
}
现在,我的要求还告诉我在用户指定的位置之前给出前5个字节,在之后给出5个字节。我认为就询问用户所需的字节位置而言,我的逻辑是正确的,但我不确定。这是我到目前为止的代码:
System.out.print("Enter byte positon to navigate to: ");
long pos = in.nextLong();
in.nextLine();
ListIterator<Byte> itr = fileList.listIterator(0);
int i = 0;
所以这应该做的是取用户指定的字节位置并存储它。
问题
我不确定如何遍历此文件。我想让迭代器从用户指定的位置开始,然后构造两个循环,分别对上一个(5次)和下一个(5次)进行调用,但是我不确定如何做到这一点。谁能给我一个从哪里开始构建我的代码部分的想法?如果有任何问题,请随时告诉我,如果您想要更多的代码,我可以很乐意提供:)。