RandomAccessFile使用

RandomAccessFile使用packagetest kang importjava io File importjava io FileNotFound importjava io IOException importjava io RandomAccess publicclassT publicstatic String arg

RandomAccessFile

RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。

RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用InputStream和OutputStream类中已经存在的任何功能;它是一个完全独立的类,所有方法(绝大多数都只属于它自己)都是从零开始写的。这可能是因为RandomAccessFile能在文件里面前后移动,所以它的行为与其它的I/O类有些根本性的不同。总而言之,它是一个直接继承Object的,独立的类。




package test.kang; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class Test16 { public static void main(String[] args) { File f=new File("F://dic//readme.txt"); try { /* * 使用RandomAccessFile.write(byte b[])方法,这样可以保证不会出现乱码。 原因是String.getBytes()会按系统默认编码获取字符串的字节码,而RandomAccessFile.write(byte b[]) 正好也是按照系统默认编码进行写入的,这样两处编码正好一致,使用其它方法无法保证编码一致。*/ //下面例子没有使用这种方法,直接write,所以文件乱码了 RandomAccessFile file=new RandomAccessFile(f,"rw"); // 以下向file文件中写数据 file.writeInt(20);// 占4个字节 file.writeDouble(8.);// 占8个字节 file.writeUTF("这是一个UTF字符串");// 这个长度写在当前文件指针的前两个字节处,可用readShort()读取 file.writeBoolean(true);// 占1个字节 file.writeShort(395);// 占2个字节 file.writeLong(l);// 占8个字节 file.writeUTF("又是一个UTF字符串"); file.writeFloat(35.5f);// 占4个字节 file.writeChar('a');// 占2个字节 file.seek(0);// 把文件指针位置设置到文件起始处 // 以下从file文件中读数据,要注意文件指针的位置 System.out.println("——————从file文件指定位置读数据——————"); System.out.println(file.readInt()); System.out.println(file.readDouble()); System.out.println(file.readUTF()); file.skipBytes(3);// 将文件指针跳过3个字节,本例中即跳过了一个boolean值和short值。 System.out.println(file.readLong()); file.skipBytes(file.readShort()); // 跳过文件中“又是一个UTF字符串”所占字节,注意readShort()方法会移动文件指针,所以不用加2。 System.out.println(file.readFloat()); //以下演示文件复制操作 System.out.println("——————文件复制(从file到fileCopy)——————"); file.seek(0); File file_Copy=new File("F://dic//readme2.txt"); RandomAccessFile fileCopy=new RandomAccessFile(file_Copy,"rw"); int len=(int)file.length();//取得文件长度(字节数) byte[] b=new byte[len]; file.readFully(b); fileCopy.write(b); System.out.println("复制完成!"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224945.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:47
下一篇 2026年3月17日 上午10:47


相关推荐

  • Mac OS 下三种修改Hosts文件的方法[通俗易懂]

    Mac OS 下三种修改Hosts文件的方法

    2022年2月11日
    57
  • 获取JavaScript时间戳函数的方法和js时间戳转时间方法

    获取JavaScript时间戳函数的方法和js时间戳转时间方法文章目录一 JavasCRIPT 时间转时间戳方法一 Date now 方法三 valueOf 方法四 getTime 方法五 Number 二 js 时间戳转时间方法一 生成 yyyy MM dd 上 下 午 hh mm ss 格式方法二 生成 yyyy MM ddhh mm ss 格式三 知识普及 1 当前系统区域设置格式 toLocaleDate 和 toLocaleTime 2 普通字符串 toDateString 和 toTimeString 3 格林威治标准时间 toGMTS

    2026年3月20日
    2
  • windows连接Ubuntu16.10中winscp连接被拒绝「建议收藏」

    windows连接Ubuntu16.10中winscp连接被拒绝「建议收藏」这些天在玩Linux上的一些东西,物理机装了Linux,虚拟机也装了。但是很尴尬,完全从Windows上迁移到Linux上还是需要时间的,比如说今天,虚拟机上就碰到了问题。博主想在Windows上装一个winscp。winscp是一款文件传输工具,可以用来做不同系统之间的文件传输。 因为某些需要,博主的虚拟机网卡设置的是host-only模式,这种模式有一个缺点,也应该不算是缺点,在这种模式

    2025年12月14日
    7
  • Burp Suite抓包、截包和改包「建议收藏」

    Burp Suite抓包、截包和改包「建议收藏」条件:本地网络使用代理,由BurpSuite来代理。也就是说,每个流出外网的web数据包都必须经过BurpSuite,她想动你的数据包,你说可以不?0、配置本地网络代理配置:Windows下,打开IE——>设置——>Internet选项——>连接——>局域网设置(L)——>代理服务器下勾选“为LAN使用代理服务器”,地址:127.0.0.1,端口:8080Bur…

    2022年6月8日
    227
  • JS判断数据类型的几种方式

    JS判断数据类型的几种方式JS 中常见的几种数据类型基本类型 string boolean number 特殊类型 undefined 和 null3 引用类型 Array Date RegExp typeoftypeof 检测基本数据类型时没有问题 但是当其对引用类型进行检测时 会返回 object 这样就无法进行精准的判断 这样也不足为奇 因为所有的对象其原型链最终都指向了 object 比如 typeofnull

    2026年3月18日
    2
  • zencart 模板文件说明

    zencart 模板文件说明如果要修改zencart模板页面背景就在includes/templates/your_template/css文件夹里的:css/stylesheet.css主样式表,修改页面背景,字体大小颜色都找它common里的:common/html_header.php页面的head部分,一般不需要修改,注意它与下面文件的区别。common/tpl_header.php网店页面…

    2022年7月27日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号