问题描述
弱弱地问一下,j2me可不可以读文件?如果能,那么文件的路径怎么写?
解决方案
解决方案二:
publicvoidwritetorecord(RecordStorers){byte[]stock=null;try{ByteArrayOutputStreambaos=newByteArrayOutputStream();DataOutputStreamdos=newDataOutputStream(baos);dos.writeUTF(name);dos.writeInt(boughtprice);dos.writeInt(soldprice);dos.writeInt(unit);dos.writeBoolean(issold);stock=baos.toByteArray();recordId=rs.addRecord(stock,0,stock.length);baos.close();dos.close();}catch(Exceptionex){}}publicvoidreadFromRecord(RecordStorers,intRecordId){try{byte[]data=rs.getRecord(RecordId);ByteArrayInputStreambais=newByteArrayInputStream(data);DataInputStreamdis=newDataInputStream(bais);name=newString(dis.readUTF());boughtprice=dis.readInt();soldprice=dis.readInt();unit=dis.readInt();issold=dis.readBoolean();bais.close();dis.close();}catch(Exceptionex){}}
解决方案三:
打开文件系统try{FileConnectionfc=(FileConnection)Connector.open(“file:///CFCard/new.txt);//操作fc.close();}catch(IOExceptionioe){}
解决方案四:
//创建文件new.txttry{FileConnectionfc=(FileConnection)Connector.open(“file:///c:/new.txt);if(!fc.exists()){fc.create();}fc.close();}catch(IOExceptionioe){}//创建子目录try{FileConnectionfc=(FileConnection)Connector.open(“file:///c:/mydir/);if(!fc.exists()){fc.mkdir();}fc.close();}catch(IOExceptionioe){}//删除文件new.txttry{FileConnectionfc=(FileConnection)Connector.open(“file:///c:/new.txt);if(!fc.exists()){fc.delete();}fc.close();}catch(IOExceptionioe){}//删除子目录try{FileConnectionfc=(FileConnection)Connector.open(“file:///c:/mydir/);if(!fc.exists()){fc.delete();}fc.close();}catch(IOExceptionioe){}希望能给你有所启示!!呵呵
解决方案五:
谢谢各位,以上的写法在书上我也看到了,可是我在模拟器上运行的时候却显示文件不存在,是因为模拟器上不能打开文件吗?还是因为可能我写错了?那个路径好像有讲究,是不是对于不同品牌的机器路径的写法不一样?如果我想打开工程文件夹下的一个文件,应该怎么写?打成JAR包之后这些文件可以保留在JAR包里吗?
解决方案六:
模拟器上路径不是c:这种形式,这种是诺基亚,索爱的典型路径。模拟器你用file:///作为根目录。
解决方案七:
建议楼主放弃,因为大多数手机是要程序提供验证才能访问手机的存储器的。而申请手机的签名貌似要钱的。
解决方案八:
在J2ME程序中,没有文件系统,想要永久保存数据,需使用RMS。当程序关闭之后,RMS中的数据仍然会保存在手机里面。当我们设计的游戏程序中,需要记录游戏的最高分,保存游戏的设置参数时,就需要用到RMS。RMS类似于简单的文件系统/数据库系统,每个文件称为一个RecordStore(记录存储器),用唯一的名字来标识(相当于文件名)。每个RecordStore中保存的数据是一个个Record(记录),每个Record有一个记录号,从1开始编号;每个Record中保存的数据是byte[]字节数组1.打开RecordStore:RecordStorers=RecordStore.openRecordStore("myname",true);"myname"表示RecordStore的名字,true表示当这个rs不存在时,需要创建一个新的rs;2.读取数据:byte[]record1=rs.getRecord(1);//读出1号记录的数据,保存到record1这个字节数组中intn=rs.getNumRecords();//读出该rs中的记录数3.保存数据:byte[]data={0,1,2,3,4,5,...};//data待为保存的数据intid=rs.addRecord(data,1,3);//增加一个新的记录,把{1,2,3}这3个字节的数据保存,返回记录号rs.setRecord(1,data,0,data.length);//修改1号记录,内容为data的全部数据4.关闭rsrs.closeRecordStore();上述操作rs的方法,出错时会抛出RecordStoreException异常,需要捕获,以便出错时也能正确关闭RecordStore.
解决方案九:
是要读取手机文件系统PIM,这个要签名后才能访问还是要读取自己的添加到资源文件getResourceAsStream(“/a.dat”);就好了
解决方案十:
如果手机支持JSR75的话,则可以操作文件,示例代码可以参看WTK安装目录下的appsPDADemo
解决方案十一:
2、3楼提供的方法并不是每个手机都能用的,只有一些几个别的极高端手机才支持标准的文件操作,而市场上的绝大部分手机存储方式都是采用的7楼的RMS存储方式。RMS存储方式其实也是跟File差不多的,现在的手机程序读取文件的方式基本上都是采用的8楼的方式。
解决方案十二:
谢谢大家的细心回答,请问添加资源文件那是什么用法?可不可以解释细一点?或者给一个网址。现在我需要预存相当数量的数据,程序的主要功能就是查找与显示这些数据,应该采用什么方法?
解决方案十三:
事实上现在很多手机都可以支持文件系统访问了,并不是所谓的极高端机才可以。由于不同手机的文件系统的标记形式可能会不同,所以我建议使用FileSystemRegistry的listRoots()的方式,现将文件系统的盘符读入内存,之后再用FileConnection的list()方法将目录中的文件检索出来,这样子就可以设备的避开差异性了。打开文件系统的操作还是比较简单的,比较麻烦的是打开RMS,这方面后来我用了Polish的RmsStorage类,因为它本身为我封装了很多方法,所以我几乎只要直接用就行了,不用自己在写太多的过程。
解决方案十四:
学习了
解决方案十五:
初学者...谢谢各位大侠的看法
解决方案:这贴整整九个月了
解决方案:WTK2.5.2appsPDAPDemo下的例子
解决方案:jsr-75包就定义了对手机本地文件资源的定义和api操作,midp包里面有的只是提供对jar打包资源自带的文件的访问,这是我从网上找的资料不知道对否?各位大侠指点一二。如果上面不适合你,就自己打包个文件,rms只能适用于小数据存储.
解决方案:好帖,精贴啊