文件指针操作

1. getFilePointer方法

RandomAccessFile的读写操作都是基于指针的,也就是说总是在指针当前所指向的位置进行读写操作。
RandomAccessFile提供了一个可以获取当前指针位置的方法:
long getFilePointer()
RandomAccessFile在创建时默认指向文件开始(第一个字节),通过getFilePointer方法获取指针位置时值是"0"。
例如:

RandomAccessFile raf = new RandomAccessFile(file,”rw”);
System.out.println(raf.getFilePointer());//0
raf.write(‘A’);//写出一个字节后,指针自动向后移动到下一个字节位置
System.out.println(raf.getFilePointer());//1
raf.writeInt(3);
System.out.println(raf.getFilePointer());//5
raf.close(); 

2. seek方法

RandomAccessFile的提供了一个方法用于移动指针位置。
void seek(long pos)
使用该方法可以移动指针到指定位置。
例如:

RandomAccessFile raf = new RandomAccessFile(file,”rw”);
System.out.println(raf.getFilePointer());//0
raf.write(‘A’);//指针位置1
raf.writeInt(3);//指针位置5
raf.seek(0);//将指针移动到文件开始处(第一个字节的位置)
System.out.println(raf.getFilePointer());//0
raf.close(); 

3. skipBytes方法

RandomAccessFile的提供了一个方法可以尝试跳过输入的 n 个字节以丢弃跳过的字节,方法定义为:
int skipBytes(int n)
该方法可能跳过一些较少数量的字节(可能包括零)。这可能由任意数量的条件引起;在跳过n个字节之前已到达文件的末尾只是其中的一种可能。此方法不抛出 EOFException。返回跳过的实际字节数。如果 n 为负数,则不跳过任何字节。

/**
 * 获取游标位置以及对基本类型进行操作的方法
 * @author Administrator
 *
 */
class TestRandomAccessFileDemo{
    public static void main(String[] args) throws IOException {
        RandomAccessFile raf = new RandomAccessFile("data.bat", "rw");
        raf.write(‘a‘); // 写一个字节
        //将int最大值写入文件
        raf.writeInt(Integer.MAX_VALUE);
        raf.writeDouble(3.141592612);
        System.out.println(raf.getFilePointer());//13
        /*
         * RandomAccessFile 提供一个写字符串的方法
         * 使UTF-8编码将字符串转换为字节后写出
         * void writeUTF(String str)
         */
        String str ="你好啊"; //24  UTF-8 多写两个字节
        raf.writeUTF(str);

    }

}
class TestRandomAccessFileDemo7{
    public static void main(String[] args) throws IOException {
        RandomAccessFile raf = new RandomAccessFile("data.bat", "r");
        int d = raf.read();
        char c= (char)d;
        System.out.println(c);//a
        System.out.println(raf.getFilePointer());//1
        /*
         * int readInt()
         * 连续读取4个字节,并转换为对应的int值
         */
        int max =raf.readInt();
        System.out.println(max);//Integer.MAX_VALUE  2147483647

        System.out.println(raf.getFilePointer()); //5

        //跳过double 8字节
        raf.seek(13);
        String str =raf.readUTF();
        System.out.println(str);//你好啊

        //读取double的内容
        raf.seek(5);
        double dou = raf.readDouble();
        System.out.println(dou);

    }
}
class TestRandomAccessFile8{
    public static void main(String[] args) throws IOException {
        /*
         * 写之前先将游标移动到文件末尾在进行写操作
         * 这样就是追加内容
         */
        RandomAccessFile raf= new RandomAccessFile("append.txt", "rw");
        /*
         * RandomAccessFile 同样支持Length
         * 用于获取文件的字节量
         */
        raf.skipBytes(20); //跳过下面20个
        raf.seek(raf.length());
        raf.write("药".getBytes("UTF-8"));

        raf.close();
    }
}
时间: 2024-07-31 11:04:51

文件指针操作的相关文章

PHP文件指针操作

一 .代码 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv=

PHP文件操作函数及文件指针理解

知识点: 一.fopen(),文件打开函数,读写参数有: 1.R  : 只读,指针在文件开头 2.r+:读写,指针同上 3.W :只写,写入前会删除文件内容,然后指针回到文件开头,文件不存在则创建 4.w+: 读写,其他同上 5.A: 只写,指针在文件末尾,文件不存在则创建,注意:此模式为"追加" 6.a : 读写, 同上 7.x:创建并打开文件(方式:只写),如果文件已存在,则返回一个E_warning错误 8.x+:创建并打开文件(方式:读写),其他同上 总结:R方式读写不错,W会

一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)

各位看官们,大家好,上一回中咱们说的是基于文件指针进行文件操作的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中详细地介绍了标准库中与文件操作相关的函数.不过,限于时间的原因,没有举具体的例子.还是那句老话,只说不练,不是我们的风格.因此,今天我们将通过具体的例子来说明如何使用文件指针来操作文件. 对文件的操作,还是使用我总结的文件操作三步曲比较好: p_file = fopen(file_name,"w"); //打开文件 re

四、基于文件指针的文件操作

基于文件指针的文件操作(缓冲) linux的文件和文件描述符 linux中对目录和设备的操作都是文件操作,文件分为普通文件,目录文件,链接文件和设备文件. 普通文件:也称磁盘文件,并且能够进行随机的数据存储(能够自由seek定位到某一个位置): 管道:是一个从一端发送数据,另一端接收数据的数据通道: 目录:也称为目录文件,它包含了保存在目录中文件列表的简单文件. 设备:该类型的文件提供了大多数物理设备的接口.它又分为两种类型:字符型设备和块设备. 字符型设备一次只能读出和写入一个字节的数据,包括

Linux下的文件操作——基于文件指针的文件操作(缓冲)

目录操作 创建和删除目录: 原型为: #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> int mkdir(const char *pathname, mode_t mode); //创建目录,mode是目录权限 int rmdir(const char *pathname); //删除目录 获取目录信息: 原型为: #include <sys/types.h> #include

文件描述符与文件指针等文件操作的几个问题

1.二者对比: 文件描述符就是open文件时产生的一个整数,直到一个索引作用,它用于UNIX系统中,用于标识文件.它是系统调用产生的. 文件指针是指向一个FILE的结构体,这个结构体里有一个元素就是文件描述符.它用于ANSI C标准的IO库调用中,用于标识文件.fopen是依赖于open的: 既然FILE中包含文件描述符元素,可以用fopen()直接获取指针fp,然后使用fp获得fp中所包含文件描述符fd的信息. 文件描述符应该是唯一的,但文件指针(值)却不是唯一的,但指向的对象却应该是唯一的.

Python中文件的操作

文件的操作介绍 文件打开的方法 主要有两种: no with 格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 常用:variable = open('路径\文件',mode,encoding=None) variable.close() #不使用with方法时,在文件操作结束时要关闭文件 with 格式:with open('路径\

C语言文件读写操作总结

C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char

Linux中文件描述符fd和文件指针flip的理解

转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp. open:文件描述符的操作(如: open)返回的是一个文件描述符(int fd),内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用(fd1,fd2,fd3...); fopen:而流(如: f