随机读写文件内容之RandomAccessFile类相关
来源:互联网 发布:淘宝宝贝排名查询软件 编辑:程序博客网 时间:2024/05/22 15:26
//重点掌握:用RandomAccessFile实现两个数组分别读取同一个文件的不同部分,最后再拼接成一个数组并打印出来.
//a.学会使用java.util.Arrays.copyOf(source,newLength),作用是:将源数据复制并扩容,返回一个包含源数组数据的新数组;
//b.学会使用java.lang.System.arraycopy(src,srcStartPosition,dest,destStartPosition,numbersToCopy)
作用:将源数据(src) 中的指定数量(numbersToCopy) 的数据copy到目标数组(dest) 中的指定位置(destStartPosition).
//Java使用的编码方法是UTF-16BE(utf-16be),一个字符都是2个字节,不管是全角还是半角.
File file=new File("C:\\Users\\Administrator\\Desktop\\想.txt");
try {RandomAccessFile raf=new RandomAccessFile(file, "rw");
long length=raf.length();
byte[] bs=new byte[(int)length/2];
byte[] c=new byte[(int)length/2];
System.out.println(length);
raf.read(bs);
raf.read(c);
int bsl=bs.length;
int cl=c.length;
bs=Arrays.copyOf(bs, bsl+cl);
System.arraycopy(c, 0, bs, bsl, cl);
String a=new String(bs,"gbk");
System.out.println(a);
raf.close();} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
java.io.File类用于表示文件(目录);
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问。
而RandomAccessFile类则用于对文件内容的随机读取。支持随机访问文件,可以访问文件的任意位置。
1.Java文件模型:在硬盘上的文件是按照byte byte byte...的字节排列存储的,是数据的集合。
2.打开文件模式(mode):"rw"(可读可写)、"r”(只读).
构造器:RandomAccessFile raf=new RandomAccessFile(file,"rw");
文件指针:打开文件时,指针在开头,即pointer=0.
3.读方法:
int a=raf.read();-->读取一个字节,读取后指针指到第二个字节,pointer=1.
4.写方法:
raf.write(int);(后8位)-->写入一个字节,写入后指针指到第二个字节,pointer=1.
5.读写完毕后要记得关闭与文件相关的流及系统资源.raf.close();
byte--字节 读出与写入的基本单元,一个字节占8位.(存储的基本单元)
char--字符 1 个字符占两个字节
short--短整型 1 个短整型占2 个字节
int--整型 1个整型占4个字节
float--单精度浮点型 1 个单精度浮点型数也占4个字节
long--长整型 1个长整型占8个字节
double--双精度浮点型 1个双精度浮点型数也占8个字节
6.如何写入一个int值: writeInt(int v)
write((v >>> 24) & 0xFF);
write((v >>> 16) & 0xFF);
write((v >>> 8) & 0xFF);
write((v >>> 0) & 0xFF);
(先将最高的8位右移到最低8位,左边全部补0,再写入最后8位)
7.raf.getFilePointer():返回当前的指针指向的位置
raf.seek(10):将指针指向第10个字节所在位置
raf.length():返回文件的长度
raf.write(int v):写入一个字节
raf.writeByte(int v):写入一个byte
raf.writeChar(int v):写入一个字符
raf.writeChars(String s):写入一个字符串,任意一人字符均为两个字节
raf.writeShort(int v):写入一个短整型,
public final void writeShort(int v) throws IOException {
write((v >>> 8) & 0xFF);
write((v >>> 0) & 0xFF);
//written += 2;
}
raf.writeInt(int v):写入一个int
raf.writeFloat(float f):写入一个float.[调用 writeInt(Float.floatToIntBits(v));]
raf.writeDouble(double d):写入一个double.[仍然是调用writeLong(Double.doubleToLongBits(v))]
raf.write(byte[] b):写入一个byte[],所以写入一个字符串时可以先转化成字节数组后再写入,也可以直接调用raf.writeChars(String s)
raf.writeBoolean(boolean b):写入一个布尔值
- 随机读写文件内容之RandomAccessFile类相关
- 随机读写文件RandomAccessFile
- RandomAccessFile文件随机读写
- RandomAccessFile类实现随机读写文件
- RandomAccessFile类的使用,随机读写文件。
- RandomAccessFile随机读写文件操作类讲解
- RandomAccessFile类学习,随机修改文件内容
- RandomAccessFile类:读写文件的内容
- java文件随机读写--RandomAccessFile
- java:RandomAccessFile(随机读写文件)
- 随机文件RandomAccessFile类
- 文件随机读写专用类——RandomAccessFile
- Java IO RandomAccessFile随机读写文件用法
- java22.IO操作------RandomAccessFile随机文件读写
- IO之随机读写流RandomAccessFile
- RandomAccessFile 读写文件内容,去除乱码
- 随机访问文件类RandomAccessFile
- 随机访问文件类RandomAccessFile
- 关于java编写画图板的思考
- yii2框架-yii2自身的自动加载(三)
- TensorFlow 0.12 Estimators Models Layers学习笔记
- mysql 5.7 ERROR 1045 (28000): Access denied for user 'root'@'localhost'
- 屏幕适配基本概念
- 随机读写文件内容之RandomAccessFile类相关
- Haar Adaboost 检测自定义目标(视频车辆检测算法代码)
- PAT---B1041. 考试座位号(15)
- 用JSP输出九九乘法表
- 【ife】任务二十一:基础JavaScript练习(四)
- 文章标题
- EL、JSP
- TCP客户/服务器程序交互过程图解
- vim选择文件中所有内容