我不知道如何读取数据后,我保存了它



问题是我正在使用FileOutputStream类的write方法。我读到的文档说这会输出一个字节到文件。我在FileOutputStream类中找不到读取方法。但是在InputStreamReader中有一个read方法。问题是,我读到的文档说这个类read函数返回一个char,通过将字节转换为char。这会改变数据吗?我该如何把数据读回。

保存文件并且似乎可以工作的代码

boolean Save()
{
      String FILENAME = "hello_file";
      String string = "hello world!";
      cDate mAppoitments[];   

      try {
      FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE );
      int i;
      mAppoitments=cDates.GetUpperDates();
      for(i=0;i<cDates.getMaxAmount();i++)
      {
          i=mAppoitments[i].getMonth();
          fos.write( i  );
          i=mAppoitments[i].getDay();
          fos.write( i  );
          i=mAppoitments[i].getYear()-1900;
          fos.write( i  );            
      }
      mAppoitments=cDates.GetLowerDates();
      for(i=0;i<cDates.getMaxAmount();i++)
      {
          i=mAppoitments[i].getMonth();
          fos.write( i  );
          i=mAppoitments[i].getDay();
          fos.write( i  );
          i=mAppoitments[i].getYear()-1900;
          fos.write( i  );            
      }       
      fos.close();
      }
      // just catch all exceptions and return false
        catch (Throwable t) {
            return false;
        }
 return true;
  }

将文件作为流打开:

// open the file for reading
InputStream instream = openFileInput(FILENAME);
// prepare the file for reading
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);

你可以逐行阅读

我的规则是读写时使用相同类型的流。因此,如果您使用openFileOutput打开文件用于写入,则使用openFileInput打开输入流以进行读取。由于write(int)方法写入一个字节到文件中,您可以安全地使用read()方法读取每个字节并将其赋值给变量。

但是,在你的循环中有一个大问题-你在循环中修改i,与索引无关:

      i=mAppoitments[i].getMonth(); // now i might be assigned with 12
      fos.write( i  ); // you write 12
      i=mAppoitments[i].getDay(); // now you look for mAppoitments[12].getDay()
      ....

使用不同的变量将这些值写入文件,不要在循环中修改i。例如:

for(i=0;i<cDates.getMaxAmount();i++)
  {
      int j;
      j=mAppoitments[i].getMonth();
      fos.write( j  );
      j=mAppoitments[i].getDay();
      fos.write( j  );
      j=mAppoitments[i].getYear()-1900;
      fos.write( j  );            
  }

如果您觉得更舒服的话,可以将输出流包装在prininterwriter中,而将输入蒸汽阅读器包装在BufferedReader中。然后,您可以写入和读取字符串。

我想你使用i作为迭代器和变量来存储你写的东西会有一些问题。

相关内容

  • 没有找到相关文章

最新更新