专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Java Exception

java.io.EOFException 一直报这个错误

发布时间:2010-06-05 12:36:16 文章来源:www.iduyao.cn 采编人员:星星草

不知为什么一直报这个错误:
java.io.EOFException
at java.io.DataInputStream.readFully(+48)
at java.io.DataInputStream.readUTF(+30)
at java.io.DataInputStream.readUTF(+4)
at gesanri.SetCanvas. <init>(+295)
at gesanri.MainCanvas.commandAction(+31)
 

做一个天气预报,可以保存要显示的城市名称
在增加城市页面,我的rms关键操作如下(其中SetCanvas.cityName是一个Vector,用来保存城市名,在执行此段代码之前,我已经把新增加的城市名添加进了这个Vector
 

Java code


try {

 recordstore = RecordStore.openRecordStore("cityStore", true);

   } catch (Exception e) {

 e.printStackTrace();

   }

   

   try {

 byte[] outputRecord;

 String city = null;

 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

 DataOutputStream outputDataStream = new DataOutputStream(outputStream);

 

 for(int i = 0; i < SetCanvas.cityName.size(); i++){

 city = (String)SetCanvas.cityName.elementAt(i);

 outputDataStream.writeUTF(city);

 }

 outputDataStream.writeInt(SetCanvas.cityName.size());

 outputDataStream.flush();

 outputRecord = outputStream.toByteArray();

 recordstore.setRecord(1,outputRecord, 0, outputRecord.length);

 outputStream.reset();

 outputStream.close();

 outputDataStream.close();

   } catch (Exception e) {

 e.printStackTrace();

   }

   try {

 recordstore.closeRecordStore();

   } catch (Exception e) {

 e.printStackTrace();

   } 



SetCanvas里的rms关键操作如下,这里首先判断了如果是初次运行这个程序,则添加北京、上海、重庆3个城市
 

Java code


try {

  recordstore = RecordStore.openRecordStore("cityStore", true);

  if(recordstore.getNumRecords() == 0){

   byte[] outputRecord;

   ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

   DataOutputStream outputDataStream = new DataOutputStream(outputStream);

   outputDataStream.writeUTF("北京");

   outputDataStream.writeUTF("上海");

   outputDataStream.writeUTF("重庆");

   outputDataStream.writeInt(3);

   outputDataStream.flush();

   outputRecord = outputStream.toByteArray();

   recordstore.addRecord(outputRecord, 0, outputRecord.length);

   outputStream.reset();

   outputStream.close();

   outputDataStream.close();

   

   cityName.addElement("北京");

   cityName.addElement("上海");

   cityName.addElement("重庆");

  }

  else{

   cityName.removeAllElements();

   String inputString = null;

   int inputInteger = 0;

   byte[] byteInputData = new byte[100];

   ByteArrayInputStream inputStream = new ByteArrayInputStream(byteInputData);

   DataInputStream inputDataStream = new DataInputStream(inputStream);

   recordstore.getRecord(1,byteInputData,0);

   inputInteger = inputDataStream.readInt();

   for(int i = 0; i < inputInteger; i++){

 inputString = inputDataStream.readUTF();

 cityName.addElement(inputString);

   }

   inputStream.reset();

   inputStream.close();

   inputDataStream.close();

  }

  }catch (Exception e) {

  e.printStackTrace();

  }

  try {

  recordstore.closeRecordStore();

  } catch (Exception e) {

  e.printStackTrace();

  } 




------解决方法--------------------------------------------------------
 

Java code


//write

 ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

 DataOutputStream outputDataStream = new DataOutputStream(outputStream);

 outputDataStream.writeInt(SetCanvas.cityName.size());//先写size

 for(int i = 0; i < SetCanvas.cityName.size(); i++){

 city = (String)SetCanvas.cityName.elementAt(i);

 outputDataStream.writeUTF(city);

 }

 outputRecord = outputStream.toByteArray();

 recordstore.setRecord(1,outputRecord, 0, outputRecord.length);

   outputDataStream.close();

//read

ByteArrayInputStream inputStream = new ByteArrayInputStream(byteInputData);

   DataInputStream inputDataStream = new DataInputStream(inputStream);

   recordstore.getRecord(1,byteInputData,0);

   inputInteger = inputDataStream.readInt();

   for(int i = 0; i < inputInteger; i++){

 inputString = inputDataStream.readUTF();

 cityName.addElement(inputString);

   }

   inputDataStream.close();

	    
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: