RandomAccessFile,read,write,复制文件,指针,批量读写,基本类型读写
来源:互联网 发布:网络推广团队遇见 编辑:程序博客网 时间:2024/05/18 15:53
//(1)read------------------public class RandomAccessFileRead { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("demo.dat","r"); /** * 从当前文件中读取一个字节 * 将该字节存入返回的int值中 * int值“低8位”有效(前24位都是0) * * 若返回值为-1,说明读取到文件的末尾 * EOF end of file */ int i = raf.read(); System.out.println(i); i = raf.read(); System.out.println(i); i = raf.read(); System.out.println(i); raf.close(); }}//(2)write-----------------------------------/** * RandomAccessfile:用于读写文件数据的类 * 是在当前指定的位置读写字节 */public class RandomAccessFileWrite { public static void main(String[] args) throws IOException { /** * 对项目根目录下的demo.dat文件进行读写 */ RandomAccessFile raf = new RandomAccessFile("demo.dat","rw");//读写"rw"或只读"r",没有只写 /* * 以下方式也可 File file = new File("demo.dat"); RandomAccessFile raf2 = new RandomAccessFile(file,"rw"); */ /** * void write(int n) * 写出给定int值的“低8位”,即最后8位二进制数 * 只写一个字节 */ //int num = 256;//100000000 int num =255;//11111111 System.out.println(Integer.toBinaryString(num)); raf.write(num);//从最开始写,覆盖之前的内容 raf.write(1); num =-1; System.out.println(Integer.toBinaryString(num));//11111111111111111111111111111111 raf.write(num);//11111111 raf.close();//使用IO后,一定要记得关闭 }}//(3)RandomAccessFile 文件复制-----------------------public class RandomAccessFileCopy { public static void main(String[] args) throws IOException { RandomAccessFile src = new RandomAccessFile("src.txt","r"); RandomAccessFile des = new RandomAccessFile("copy.txt","rw"); int d = -1; while((d=src.read())!=-1){ des.write(d); } src.close(); des.close(); }}//(4)获得指针getFilePoint,移动指针seek----------public class RandomAccessFileDemo { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("raf.dat","rw"); /** * long getFilePoint() * 获得当前RAF的指针位置 */ long p = raf.getFilePointer(); System.out.println(p);//0 raf.write(97);//写一个字节 System.out.println(raf.getFilePointer());//1 raf.writeInt(1);//连续写4个字节 System.out.println(raf.getFilePointer());//5 System.out.println(raf.read());//-1,读取一个字节,文件的末尾 /** * 若想从某个地方读取字节,需要移动指针 * void seek(long position),将指针移动到某个位置 */ raf.seek(0); System.out.println(raf.read());//97 }}//(5)指针往后跳skipBytes-----------------public class RandomAccessFileDemo2 { /** * int skipBytes(int n) * 该方法会跳过n个字节, * 返回值为实际跳过的字节数 * 只能往后跳,不能往前跳 */ public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("raf.dat","r"); int i = raf.skipBytes(1); System.out.println(i); System.out.println(raf.read()); }}/** * //(6)-------------- * 读写数据时,若想提高读写效率, * 就必须减少读写次数 */public class RandomAccessFileDemo4 {/** * 批量写出一组字节 * @throws IOException */ public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("t.txt","rw"); String str = "我";//内存里是unicode编码,2字节 /** * String的getBytes()方法: * 将当前的字符串按照系统默认的字符集转为对应的字节 * * UTF-8:中文占3个字节,英文一个字节 * GBK:中文2个字节,英文一个 */ //内存里是内存里是unicode编码,2字节,java去UTF-8编码里去找“我”的编码 byte[] buf = str.getBytes("UTF-8"); raf.write(buf);//结果:t.txt为3个字节 raf.close(); }}//(7)批量读取数据---------public class RandomAccessFileDemo57 { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("t.txt","r"); /** * int read(byte[] buf) * 一次从文件中读取buf数组length个字节 * 并从该数组的第一个位置处起存放实际读取到的字节 * 返回值为实际读取到的字节数 */ byte[] buf = new byte[50]; int length = raf.read(buf); System.out.println(length);//3,因为"我"在utf-8编码里占3个字节 System.out.println(Arrays.toString(buf)); //[-26, -120, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }}//(8)每次读写10K复制文件--------public class RandomAccessFileDemo68 { public static void main(String[] args) throws IOException { RandomAccessFile src = new RandomAccessFile("src.jpg","r"); RandomAccessFile des = new RandomAccessFile("copy.jpg","rw"); byte[] buf = new byte[10240];//10K int len = -1; while((len=src.read(buf))!=-1){ des.write(buf); } src.close(); des.close(); }}//(9)向文件中写入基本类型数据-----------------public class RandomAccessFileDemo79 { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("raf.dat","rw"); int num = Integer.MAX_VALUE; //将int写入文件 /** * 01111111 11111111 11111111 11111111 * num>>>24:右移24位,前面补0 * * write()写的是低8位 */ raf.write(num>>>24); raf.write(num>>>16); raf.write(num>>>8); raf.write(num); raf.writeInt(num);//这句等价于上面4句 raf.writeDouble(1.42); raf.writeLong(123); int i = raf.readInt(); System.out.println(i); raf.close(); }}
1 0
- RandomAccessFile,read,write,复制文件,指针,批量读写,基本类型读写
- 读写文件read/write
- read write 调用过程 文件读写 分析
- linux kernel read write file 读写文件
- Python 文件/文件夹操作(读写read/write、复制copy、删除delete、重命名rename)
- Python 文件/文件夹操作(读写read/write、复制copy、删除delete、重命名rename)
- MappedByteBuffer+RandomAccessFile读写文件
- 随机读写文件RandomAccessFile
- RandomAccessFile读写文件字符
- RandomAccessFile文件读写操作
- RandomAccessFile文件随机读写
- Linux C编程学习笔记(3):read、write、lseek函数及文件读写和文件读写指针的移动操作
- RandomAccessFile多线程下载、复制文件、超大文件读写
- java 使用RandomAccessFile类基于指针方式读写文件
- Linux VFS文件系统之读写(read/write)文件
- 读写文件节点---echo与read、write均可
- write to and read from files (读写文件)
- 【Linux】使用read、write、lseek函数实现文件读写操作
- UI第二讲UITextField和UIButton
- X264码率控制总结1——ABR,CQP,CRF
- 欢迎使用CSDN-markdown编辑器
- halcon学习笔记——(6)单摄像机标定
- 文本编辑工具vim
- RandomAccessFile,read,write,复制文件,指针,批量读写,基本类型读写
- wg_listToTree小插件 用 javascript 将List数组转换为Tree
- halcon学习笔记——(7)HALCON标定后的二维测量
- Android 平台下使用 i2c-tools
- 文档的压缩与打包
- apxs - Apache 扩展工具
- X264码率控制总结2——x264码率控制方法概述
- qt多点触控
- halcon学习笔记——(8)由标定板得到测量平面位姿