Java中文件的随机读写

Java.io 包提供了 RandomAccessFile 类用于随机文件的创建和访问。使用这个类,可以跳转到文件的任意位置读写数据。程序可以在随机文件中插入数据,而不会破坏该文件的其他数据。此外,程序也可以更新或删除先前存储的数据,而不用重写整个文件。

RandomAccessFile类是Object类的直接子类,包含两个主要的构造方法用来创 建RandomAccessFile 的对象,如表 10-11 所示。
表 10-11 RandomAccessFile 类的构造方法
构造方法 功能描述
public RandomAccessFile(String name, String mode)指定随机文件流对象所对应的文件名,以 mode 表示对文件的访问模式
public RandomAccessFile (File file, String mode)以 file 指定随机文件流对象所对应的文件名,以 mode 表示访问模式

需要注意的是,mode 表示所创建的随机读写文件的操作状态 ,其取值包括:
  • r:表示以只读方式打开文件。
  • rw:表示以读写方式打开文件,使用该模式只用一个对象即可同时实现读写操作。

表 10-12 列出了 RandowAccessFile 类常用的方法及说明。
表 10-12 RandowAccessFile 的常用方法
方法 功能描述
long length()返回文件长度
void seek(long pos)移动文件位置指示器,pos 指定从文件开头的偏离字节数
int skipBytes(int n)跳过 n 个字节,返回数为实际跳过的字节数
int read()从文件中读取一个字节,字节的高 24 位为 0,若遇到文件结尾,返回-1
final byte readByte()从文件中读取带符号的字节值
final char readChar()从文件中读取一个 Unicode 字符
final void writeChar(inte c)写入一个字符,两个字节

【例 10-12】模仿系统日志,将数据写入到文件尾部。
//********** ep10_12.java **********
import java.io.*;
class ep10_12{
    public static void main(String args[]) throws IOException{
        try{
            BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
            String s=in.readLine();
            RandomAccessFile myFile=new RandomAccessFile("ep10_12.log","rw");
            myFile.seek(myFile.length());  //移动到文件结尾
            myFile.writeBytes(s+"\n");  //写入数据
            myFile.close();
        }
        catch(IOException e){}
    }
}
程序运行后在目录中建立一个 ep10_12.log 的文件,每次运行时输入的内容都会在该文件内容的结尾处添加
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用RandomAccessFile类实现文件随机读写。RandomAccessFile类允许您在文件的任意位置读写数据,而不是仅从头开始或从末尾开始读写数据。 以下是一个示例代码,演示如何使用RandomAccessFile类进行文件随机读写: ```java import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFileExample { public static void main(String[] args) { try { // 创建RandomAccessFile对象 RandomAccessFile file = new RandomAccessFile("example.txt", "rw"); // 向文件写入数据 file.write("Hello World".getBytes()); // 将文件指针移动到文件开头 file.seek(0); // 文件内容 byte[] content = new byte[11]; file.read(content); System.out.println(new String(content)); // 将文件指针移动到文件末尾 file.seek(file.length()); // 向文件写入数据 file.write("Java IO Example".getBytes()); // 关闭文件流 file.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例,我们首先创建了一个RandomAccessFile对象,并以“rw”模式打开文件,这意味着我们可以取和写入文件。然后,我们向文件写入“Hello World”字符串,并将文件指针移动到文件开头。接下来,我们文件内容并将其打印到控制台上。然后,我们将文件指针移动到文件末尾,并向文件写入“Java IO Example”字符串。最后,我们关闭文件流。 请注意,我们在文件内容时,使用了byte数组来存储取的数据。这是因为RandomAccessFile类的read方法返回一个int值,表示实际取的字节数,而不是取的数据本身。因此,我们需要使用byte数组来存储取的数据。 希望这可以帮助您了解Java如何进行文件随机读写

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值