RandomAccessFile

本文介绍随机访问文件(RandomAccessFile)的基本概念、构造方法及如何通过绝对和相对跳跃进行文件数据的操作。通过示例展示了如何读写文件以及修改特定位置的数据。

(1)作用

          用于根据字节偏移量来操作文件中的数据。

          注意:只能实现文件中数据的读取和修改,根本无法做到插入!(当然,将文件大小扩容,并且插入位置后的数据全部后移也是一种方法)


(2)常用方法

          1)构造方法

public RandomAccessFile(String name, String mode)
              name:文件的路径

              mode:r——只读  rw——读写
          2)绝对跳跃

public native void seek(long pos)
              也就是相对于文件开头跳过多少字节
          3)相对跳跃            

public int skipBytes(int n)
              相对当前位置跳跃多少个字节


(3)实例

	@Test
	public void testRaf()
	{
		RandomAccessFile file = null;
		try {
			file = new RandomAccessFile("d:\\BugReport.txt", "rwd");
			for (int i = 0; i < 5; i++) {
				file.writeInt(i);
			}
			
			//修改第二个数据(因为int类型为4byte,所以*4),绝对定位
			file.seek(2*4);
			file.writeInt(6);
			
			System.out.println("打印所有数据:修改后");
			file.seek(0);
			for (int i = 0; i < file.length()/4-1; i++) {
				System.out.println(file.readInt());
			}
			
			System.out.println("打印位置跳跃后数据");
			file.seek(0);
			//相对当前位置跳过4个字节
			file.skipBytes(1*4);//相对定位
			System.out.println(file.readInt());
			
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if (file!=null) {
				try {
					file.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
                结果为:

打印所有数据:修改后
0
1
6
3
4
打印位置跳跃后数据
1

(4)总结

          只适合于其中记录大小完全相同的文件,其他情况下使用起来相当麻烦

         另外,也不要用这个了,使用nio的内存映射来做


【SCI复现】含可再生能源与储能的区域微电网最优运行:应对不确定性的解鲁棒性与非预见性研究(Matlab代码实现)内容概要:本文围绕含可再生能源与储能的区域微电网最优运行展开研究,重点探讨应对不确定性的解鲁棒性与非预见性策略,通过Matlab代码实现SCI论文复现。研究涵盖多阶段鲁棒调度模型、机会约束规划、需求响应机制及储能系统优化配置,结合风电、光伏等可再生能源出力的不确定性建模,提出兼顾系统经济性与鲁棒性的优化运行方案。文中详细展示了模型构建、算法设计(如C&CG算法、大M法)及仿真验证全过程,适用于微电网能量管理、电力系统优化调度等领域的科研与工程实践。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事微电网、能源管理相关工作的工程技术人员。; 使用场景及目标:①复现SCI级微电网鲁棒优化研究成果,掌握应对风光负荷不确定性的建模与求解方法;②深入理解两阶段鲁棒优化、分布鲁棒优化、机会约束规划等先进优化方法在能源系统中的实际应用;③为撰写高水平学术论文或开展相关课题研究提供代码参考和技术支持。; 阅读建议:建议读者结合文档提供的Matlab代码逐模块学习,重点关注不确定性建模、鲁棒优化模型构建与求解流程,并尝试在不同场景下调试与扩展代码,以深化对微电网优化运行机制的理解。
RandomAccessFile 类支持对随机访问文件的读写操作,能够在文件的任意位置进行读写。 #### 构造方法 RandomAccessFile 主要有两个构造方法: - `RandomAccessFile(File file, String mode)`:使用给定的文件对象和访问模式创建一个新的 RandomAccessFile 实例。 - `RandomAccessFile(String name, String mode)`:使用给定的文件名和访问模式创建一个新的 RandomAccessFile 实例[^1]。 #### 功能介绍 RandomAccessFile 的实例可以对文件中随机位置进行读写,展示了其随机访问能力,即可以在文件的任意位置进行读写操作。这一特性使其在断点续传、多线程下载等场景中发挥重要作用。例如在多线程下载中,可将文件分成多个部分,每个线程负责下载并写入自己负责的部分,第一个线程从文件起始位置开始写,第二个线程从 20% 位置开始写,以此类推,最终完成整个文件的下载[^2][^3][^4]。 #### 使用示例 以下是一个使用 RandomAccessFile 将一个整数和一个字符串写入文件,然后将文件指针移回到文件的开头,并从文件中读取并打印这些数据的示例代码: ```java import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAccessFileExample { public static void main(String[] args) { try { // 创建一个新的 RandomAccessFile 实例 RandomAccessFile raf = new RandomAccessFile(new File("test.txt"), "rw"); // 写入一个整数 raf.writeInt(123); // 写入一个字符串 raf.writeUTF("Hello, World!"); // 将文件指针移回到文件的开头 raf.seek(0); // 读取整数 int num = raf.readInt(); // 读取字符串 String str = raf.readUTF(); // 打印读取的数据 System.out.println("Read integer: " + num); System.out.println("Read string: " + str); // 关闭文件 raf.close(); } catch (IOException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值