java 随机读写访问流及seek方法
时间:2019-11-18
本文章向大家介绍java 随机读写访问流及seek方法,主要包括java 随机读写访问流及seek方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package stream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import org.junit.jupiter.api.Test; /* * RandomAccessTile:随机读写访问流 * 既可以是输入流,也可以是输出流 * r|w|d|s:读|写|更新数据|元数据更新 * * w:是对开头对文件内容进行覆盖 * * */ public class RandomAccessFileTest { @Test public void test1(){ RandomAccessFile raf1 = null; RandomAccessFile raf2 = null; try { //1.流对象 raf1 = new RandomAccessFile(new File("hello.txt"),"r"); raf2 = new RandomAccessFile(new File("hello2.txt"),"rw"); //2.读写 byte[] buffer = new byte[1024]; int len; while((len = raf1.read(buffer))!=-1) { raf2.write(buffer,0,len); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(raf1!=null) raf1.close(); } catch (Exception e) { e.printStackTrace(); } try { if(raf2!=null) raf2.close(); } catch (Exception e) { e.printStackTrace(); } } } /* * seek随机访问|插入方法 * * */ @Test public void test2() throws IOException { RandomAccessFile raf1 = new RandomAccessFile("hello.txt", "rw"); /*raf1.seek(3); raf1.write("abc".getBytes()); */ /* * 使用StringBuilder * */ StringBuilder sb = new StringBuilder((int)(new File("hello.txt").length())); raf1.seek(3L); int len; byte[] buffer = new byte[20]; while((len = raf1.read(buffer))!=-1) { sb.append(new String(buffer,0,len)); } raf1.seek(3L); raf1.write("xyz".getBytes()); raf1.write(sb.toString().getBytes()); raf1.close(); } }
原文地址:https://www.cnblogs.com/zsben991126/p/11881233.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- LeetCode-2.两数相加 使用链表加法实现
- Spring学习(2):Spring Bean管理(上)
- 聊聊dubbo-go的TpsLimitFilter
- spring,springBoot事件
- LeetCode-3.无重复字符的最长子串 利用一个整形数组+ASCII码实现滑动窗口
- 算法不想学(二): 堆排序和top k
- 利用python读取EXCEL文档中的创建者信息
- R语言工具变量与两阶段最小二乘法
- 贼好用的Java工具类库,GitHub星标13k+,很是厉害!
- CPU密集型任务会阻塞 Node.js 吗
- Let's Encrypt 配置 HTTPS 免费泛域名证书
- 如何删除重复数据(二)
- 如何删除重复数据
- SQL 生成斐波那契数列
- SQL 计算小计和总计