手机搜索开发日志(2)

RMS到底类似于内存还是外存?记录存储器更像一个文件,而不是一个数据库管理系统。使用RecordEnumeration接口可以在记录存储器中进行查询和排序。
for (int i = 1; i <= recordstore.getNumRecords(); i++)
recordstore的ID是从1开始,而非0开始。

现在遇到一个问题了,将“你好,涓涓细流”这个字符串转换成字节数组,之后又转换成字符串在S60中文模拟器中显示成“??????”,显然是显示错误,该怎么办?用DataInputStream的readUTF()方法输入可以正常输出汉字!


现在要编写用来保存复杂数据类型的记录的程序,怎么把需要的庞大的数据存储到手机里。

先调用ByteArrayOutputStream()构造函数创建字符数组输出流把数据写到缓冲区中,再调用DataOutputStream()构造函数输出字节数组输出流的数据输出流,此函数调用前者的应用。这个操作的目的是把数据写到缓冲区中,然后把缓冲区中的数据写到六种,然后再把数据流转换成一个字节数组,再把字节数组写到记录存储器中。

DataOutputStream类有吧特殊数据类型写到缓冲区的方法,是不是我上次遇到的不能正确显示中文的问题就可以借助DataOutputStream()得到解决呢?

flush():把缓冲区的数据放置到数据流中。
toByteArray():把数据流转换成字节数组。
reset():清空ByteArrayOutputStream对象内部所存储的数据。

[b]查询记录[/b]
查询用的是过滤器实现的。
在netbeans中输入Filter,竟然报错说“找不到符号 类:Filter”,这是为什么呢?

[b]利用rms实现信息的存储和查询[/b]

[b]1.[/b]记录存储系统是在一个记录存储器中存储信息,所以要存储信息,首先要[b]建立[/b]自己的记录存储器,相当于pc中的数据表。
private RecordStore recordstore = null;//新建一个RecordStore类的实例
recordstore = RecordStore.openRecordStore("我的记录存储器的名字",true);//true表示若我的记录存储器不存在,则新建一个名为“我的记录存储器”的记录存储器。
RecordStore类是RMS中唯一的一个类。

[b]2.[/b]向recordstore记录存储器中写入记录
try{
byte[] outputRecord;//字节数组
String outputString[] = {"娟", "婷", "珊"};//要存进recordstore的字符串数组
int outputInteger[] = {15, 10, 5};//要存进recordstore的整数型数组
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();//字节数组输出流
DataOutputStream outputDataStream = new DataOutputStream(outputStream);//数据输出流
//将数组中的信息写到数据输出流中
for (int i = 0; i <3; i++){
outputDataStream.writeUTF(outputString[i]);//这个就是可以写汉字的函数吧,这里只是读到缓冲区中
outputDataStream.writeInt(outputInteger[i]);//这里只是读到缓冲区中
outputDataStream.flush();//把缓冲区的数据放置到数据流中
outputRecord = outputStream.toByteArray();//把数据流转换成字节数组
recordstore.addRecord(outputRecord, 0, outputRecord.length);//将字节数组写到记录存储器中
outputStream.reset();//清空ByteArrayOutputStream对象内部所存储的数据
}
outputStream.close();//关闭字节数组输出流
outputDataStream.close();//关闭数组输出流
}
catch (Exception error){
alert = new Alert("写错误", error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}

[b]3.[/b]读存储记录
try{
String inputString;//
byte[] byteInputData = new byte[300];
ByteArrayInputStream inputStream = new ByteArrayInputStream(byteInputData);
DataInputStream inputDataStream = new DataInputStream(inputStream);
//以下到002是练习过滤器查询复杂数据记录
if (recordstore.getNumRecords() > 0){
filter = new Filter("珊");
recordEnumeration = recordstore.enumerateRecords(filter, null, false);
while (recordEnumeration.hasNextElement()){
recordstore.getRecord(recordEnumeration.nextRecordId(), byteInputData, 0);
inputString = inputDataStream.readUTF() + " " + inputDataStream.readInt();
alert = new Alert("Reading", inputString, null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}
inputStream.close();
}
catch (Exception error){
alert = new Alert("Error Reading", error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}

[b]4.关闭记录存储器[/b]
try{
recordstore.closeRecordStore();
}
catch (Exception error){
alert = new Alert("Error Closing", error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}

[b]5.删除记录存储器[/b]
if (RecordStore.listRecordStores() != null){
try{
RecordStore.deleteRecordStore("DalianBus");
}
catch (Exception error){
alert = new Alert("Error Creating", error.toString(), null, AlertType.WARNING);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert);
}
}

[b]明天要解决的问题:怎么利用RMS存储如此庞大的数据信息![/b]
【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频与稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模与扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为与失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材与原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环与电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值