求java大神秒杀以下关于RandomAccessFile的问题(我在线,可以马上给分)

package a.b;
importjava.io.File;
importjava.io.IOException;
import java.io.RandomAccessFile;
publicclass E {
publicstaticvoid main(String[] args) throws IOException {
File f = new File("a.txt");
RandomAccessFile raf = new RandomAccessFile(f, "rw");
raf.write(97);
raf.writeInt(3);//为什么不能读取3出来?怎样才能把这个3读取出来,我是新手,用javaSE来解说
raf.seek(4);
System.out.println(raf.readInt());
}
}
上面a.txt是定义在工作区里了 可以不用盘符

你刚写出了,位置指针就向前移动了,我们需要把指针拉回去。

raf.seek(0);
System.out.println((raf.readByte()));

raf.seek(1);
System.out.println(raf.readInt());

输出:

97
3

 

你一共才向文件中写了2个东西,却想读取第5个位置的东西。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-02

对代码进行了修改,可以参考下。

File f = new File("a.txt");
        RandomAccessFile raf = new RandomAccessFile(f, "rw");  
        raf.write(97);
        long index = raf.getFilePointer();//获取当前指针位置
        raf.writeInt(3);//为什么不能读取3出来?怎样才能把这个3读取出来,我是新手,用javaSE来解说
       raf.seek(index);//跳转指针位置到3前。
       System.out.println(raf.readInt());

本回答被提问者采纳

java中RandomAccessFile的使用!?
RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,可以在文件的指定位置 的读取和写入内容,这在很多时候都是很方便的。read()是从文件中读取内容,一次只读取一个字节,readByte里面的参数是一个byte数组,一次可以读取这个数组大小的数据。它返回的值就是实际读取了多个字节的...

java:文件读写,RandomAccessFile类,问题在注释上。
String file = "c:\/123.txt";RandomAccessFile rf = new RandomAccessFile(file,"rw");StringBuffer sb = new StringBuffer();String line = null;while((line = rf.readLine())!=null){ sb.append(line);} rf.close();System.out.println(sb.toString());\/\/以上是读 ...

java RandomAccessFile 向文件中写入数据,覆盖原来的数据
还用你的代码,先得到文件的长度,rf.seek(f1.length()); 再写就行了。

用randomaccessfile流将一个文本文件倒置读出
public static void main(String args[]) { try { File file = new File("C:\\\\Users\\\\senn\\\\Desktop\\\\作业\\\\test.txt"); RandomAccessFile random = new RandomAccessFile(file, "rw"); long theLength = random.length(); while (theLength > 0) { random.seek(--...

关于RandomAccessFile类
首先你的输出文件:student.txt命名有问题,在windows平台下,这个文件的长度,不是你写入数据的具体长度,平台可能会加上几个字符(你可以把第一个student对象的名字改成"a"实验一下),你的测试没有抛异常,可能是你的测试代码正好能组成一个.txt格式的文件,所以平台没有给你加字节。我觉得最好还是...

《Java面向对象编程》导读-RandomAccessFile类随机读写文件
例程1:RandomTester类展示了RandomAccessFile类的使用。RandomTester.java代码如下,在main()方法中,使用“rw”访问模式打开D:\\test.dat文件。若文件不存在,构造方法会创建。程序接着向文件写入10个long数据,每个占用8字节。通过rf.seek(5*8)移动读写指针,跳过第5个long数据,rf.writeLong(1234)...

java中用RandomAccessFile,如何读取文件中的中文
以下是java文档的解释:public final String readLine()throws IOException 从此文件读取文本的下一行。此方法可以从该文件的当前文件指针处成功地读取字节,直到到达行结束符或文件的末尾。每个字节都转换为一个字符,方法是采用该字符的低八位字节值,并将该字符的高八位设置为零。因此,此方法不支持完整的...

java的randomaccessfile读写文件中文乱码问题
java中RandomAccessFile存取读写文件,需要用getBytes()先转换编码,中文乱码解决示例):package Iec104Config;import java.io.*;public class Test { public static void main(String[] args)throws IOException{ String stringToBeSaved="测\\naa"; FileWriter saveFile=new FileWriter("Test.txt...

Java RandomAccessFile 和FileInputStream 问题
RandomAccessFile提供Data流的读写功能,可以把基本数据写到文本里,而且还能随意定位文件读取位置。FileInputStream只是普通的读取文件,按照文本的方式读取,就是当普通字符串处理,特殊类型数据没法解读,读出来就和乱码一样。

RandomAccessFile不明白的用法seek有代码请教谢谢了?
参数:pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。抛出:IOException - 如果 pos 小于 0 会发生 I\/O 错误。在你的例子中就是将RandomAccessFile的读取指针设置在0的位置,从0位开始读取数据^^^ 注意查看你读取的空格数量!看错了你是写进去,它只能定位文件中存在的,写...

相似回答