在类中使用openFileOutput()。 (不是活动)

时间:2011-05-03 22:04:32

标签: java android file

我的Activity类调用另一个非活动类,当我尝试使用openFileOutput时,我的IDE告诉我openFileOutput是未定义的。请帮忙:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;

import android.util.Log;
import android.content.Context;

public class testFile(){

Context fileContext;

public testFile(Context fileContext){
    this.fileContext = fileContext;
}

public void writeFile(){
    try{
            FileOutputStream os = fileContext.getApplicationContext().openFileOutput(fileLoc, Context.MODE_PRIVATE);
        os.write(inventoryHeap.getBytes()); // writes the bytes
        os.close();
        System.out.println("Created file\n");
    }catch(IOException e){
        System.out.print("Write Exception\n");
    }
}
}

4 个答案:

答案 0 :(得分:2)

你已经有了一个上下文。

FileOutputStream os = fileContext.openFileOutput(fileLoc, Context.MODE_PRIVATE);

答案 1 :(得分:0)

我之前删除了我的答案,因为我错了,我看到的问题是你将()添加到类声明:public class testFile(){。它应该是public class testFile{。就是这样。

答案 2 :(得分:0)

您可以尝试将Context fileContext;更改为static Context fileContext;

答案 3 :(得分:0)

我为我写的比其他任何人都多。我是android编程的新手。我遇到了同样的问题,我通过将上下文作为参数传递给方法来修复。在我的例子中,该类试图使用我在Java示例中找到的一段代码写入文件。因为我只是想写一个对象的持久性,并且不想关注"其中"该文件是,我修改为以下:

public static void Test(Context fileContext) {
  Employee e = new Employee();
  e.setName("Joe");
  e.setAddress("Main Street, Joeville");
  e.setTitle("Title.PROJECT_MANAGER");
  String filename = "employee.ser";
  FileOutputStream fileOut =  fileContext.openFileOutput(filename, Activity.MODE_PRIVATE); // instead of:=> new FileOutputStream(filename);
  ObjectOutputStream out = new ObjectOutputStream(fileOut);
  out.writeObject(e);
  out.close();
  fileOut.close();
}

从调用活动我使用以下内容:

SerializableEmployee.Test(this.getApplicationContext());

像魅力一样工作。然后我可以用(简化版)阅读它:

public static String Test(Context fileContext) {
  Employee e = new Employee();
  String filename = "employee.ser";
  File f = new File(filename);
  if (f.isFile()) {
    FileInputStream fileIn = fileContext.openFileInput(filename);// instead of:=> new FileInputStream(filename);
    ObjectInputStream in = new ObjectInputStream(fileIn);
    e = (Employee) in.readObject();
    in.close();
    fileIn.close();
   }
  return e.toString();
}