0

我的 Activity 类中有用于加载和保存文件的代码。它工作正常。该代码保存了 cFavretClass 的内容。我正在尝试清理代码,所以我将文件 i/o 移动到 cFavret 类中。

我无法编译代码。现在我收到一条错误消息openFileOutput is undefined in type cFavrets

我假设这个方法是在谷歌活动类中声明的?这是否意味着所有文件 I/O 都必须在活动类中?

boolean Save()
{
  String FILENAME = "hello_file";

  try {
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE );
    fos.write(buffer);
    fos.close();
  }
  // just catch all exceptions and return false
  catch (Throwable t) {
    return false;
  }       
  return true;
}  

boolean Load()
{
  String FILENAME = "hello_file";
  try {
    FileInputStream fos = openFileInput(FILENAME);   
    buffer[0]=0;
    fos.read(buffer);
    fos.close();
  }
  // just catch all exceptions and return false
  catch (Throwable t) {
  // maybe file does not exist, try creating it
    return false;
  }
  return true;
}
4

2 回答 2

1

这是否意味着所有文件 I/O 都必须在活动类中?

不,但是有问题的方法是从上下文中调用的 - 只需将上下文传递给 this 的构造函数cFavretClass(或方法本身,如果您愿意):

Context mContext;
public cFavretClass(Context context) {
  mContext = context;
}

...
  // in your methods:
  mContext.openFileOutput(FILENAME);
于 2012-09-05T20:01:23.850 回答
0

正如 JRaymond 所解释的,它是openFileOutput一种衍生方法。此方法的特殊之处在于它允许您创建对您的应用程序私有的文件。ContextActivity

您也可以使用普通的 Java I/O 类来写入外部存储(SD 卡),但每个人都可以读取这些文件。

于 2012-09-05T20:05:00.480 回答