15、Java入门—Java IO流之RandomAccessFile类的基本操作
2016-10-23 19:00
495 查看
【RandomAccessFile类】
RandomAccessFile java 提供的对文件内容的访问,既可以读文件,也可以写文件
RandomAccessFile支持随机访问文件,可以访问文件的任意位置
①java文件模型
在硬盘上的文件是 byte byte byte存储的,是数据的集合
②打开文件
有两种模式“rw”(读写)“r”(只读)
RandomAccessFile raf = new RandomAccessFile(file,"rw");
③写方法
raf.write(int) ---> 只写一个字节(后8位),同时指针指向下一个位置
④读方法
int b = raf.read() ----> 读一个字节
⑤文件读写完成以后一定要关闭
否则会有意想不到的错误
File demo = new File("demo");
if(!demo.exists())
demo.mkdir();//创建demo目录
File file = new File(demo,"raf.dat");
if(!file.exists())
file.createNewFile();//在demo目录下,创建raf.dat文件
//打开文件,进行随机读写
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.write('A');//只写一个字节,同时指针后移
System.out.println(raf.getFilePointer());//输出:1
raf.write('B');
//若要写入一个整数i则需要写四次
int i=0x7fffffff;
raf.write(i>>>24);//高八位
raf.write(i>>>16);
raf.write(i>>>8);
raf.write(i);//低八位
//也可直接写入一个int
raf.writeInt(i);
//写入汉字
String s="中";
byte[] gbk=s.getBytes("gbk");
raf.write(gbk);
System.out.println(raf.length(0);//输出:12(中文占俩字节)
//读文件时必须把指针移到头部
raf.seek(0);
//一次性读取
byte[] buf= new byte[(int)raf.length()];
raf.read(buf);
System.out.println(Arrays.toString(buf));
//此时打印输出:[65,66,127,-1,-1,-1,127,-1,-1,-1,-42,-48]
//开头的65,66是正确的AB,因为后八位已经能表示AB了
//也可按字符串输出
String s1=new String(buf,"gbk");
System.out.println(s1);//输出:AB?????(因为“中”的前后都有字节,只有定位到中的两个字节,才能读出它)
raf.close();//最后要加上
RandomAccessFile java 提供的对文件内容的访问,既可以读文件,也可以写文件
RandomAccessFile支持随机访问文件,可以访问文件的任意位置
①java文件模型
在硬盘上的文件是 byte byte byte存储的,是数据的集合
②打开文件
有两种模式“rw”(读写)“r”(只读)
RandomAccessFile raf = new RandomAccessFile(file,"rw");
③写方法
raf.write(int) ---> 只写一个字节(后8位),同时指针指向下一个位置
④读方法
int b = raf.read() ----> 读一个字节
⑤文件读写完成以后一定要关闭
否则会有意想不到的错误
File demo = new File("demo");
if(!demo.exists())
demo.mkdir();//创建demo目录
File file = new File(demo,"raf.dat");
if(!file.exists())
file.createNewFile();//在demo目录下,创建raf.dat文件
//打开文件,进行随机读写
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.write('A');//只写一个字节,同时指针后移
System.out.println(raf.getFilePointer());//输出:1
raf.write('B');
//若要写入一个整数i则需要写四次
int i=0x7fffffff;
raf.write(i>>>24);//高八位
raf.write(i>>>16);
raf.write(i>>>8);
raf.write(i);//低八位
//也可直接写入一个int
raf.writeInt(i);
//写入汉字
String s="中";
byte[] gbk=s.getBytes("gbk");
raf.write(gbk);
System.out.println(raf.length(0);//输出:12(中文占俩字节)
//读文件时必须把指针移到头部
raf.seek(0);
//一次性读取
byte[] buf= new byte[(int)raf.length()];
raf.read(buf);
System.out.println(Arrays.toString(buf));
//此时打印输出:[65,66,127,-1,-1,-1,127,-1,-1,-1,-42,-48]
//开头的65,66是正确的AB,因为后八位已经能表示AB了
//也可按字符串输出
String s1=new String(buf,"gbk");
System.out.println(s1);//输出:AB?????(因为“中”的前后都有字节,只有定位到中的两个字节,才能读出它)
raf.close();//最后要加上
相关文章推荐
- ElasticSearch的Java Api基本操作入门指南
- Spark编程指南入门之Java篇二-基本操作
- 23、Java入门—反射之方法反射的基本操作
- java基础入门-----list容器的基本操作2
- Spark编程指南入门之Java篇二-基本操作
- java基础入门-----list容器的基本操作1
- Java mongodb 基本操作入门
- ElasticSearch的Java Api基本操作入门指南
- ElasticSearch的Java Api基本操作入门指南
- java基础入门-----list容器的基本操作3
- Spark编程指南入门之Java篇二-基本操作
- java基本入门-----String的基本操作
- 我的java/Spring框架入门学习过程(2):IOC的基本操作
- Java新手入门需要掌握的30个基本概念(转载)
- [转贴]Java新手入门的30个基本概念
- Java入门需掌握的30个基本概念
- Java Applet 入门 15
- Java入门需掌握的30个基本概念
- Java入门需掌握的30个基本概念[转]
- Java入门需掌握的30个基本概念