используя openFileOutput () в классе.(не деятельность) - PullRequest
3 голосов
/ 04 мая 2011

мой класс 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 ]

2 голосов
/ 04 мая 2011

У вас уже есть контекст.

FileOutputStream os = fileContext.openFileOutput(fileLoc, Context.MODE_PRIVATE);
0 голосов
/ 24 июля 2015

Я пишу это больше для меня, чем для кого-либо еще.Я новичок в программировании 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();
}
0 голосов
/ 16 марта 2015

Вы можете попробовать изменить Context fileContext; на static Context fileContext;

0 голосов
/ 04 мая 2011

Я удалил свой ответ ранее, поскольку я ошибся, проблема, которую я вижу, заключается в том, что вы добавляете () к объявлению класса: public class testFile(){.это должно быть public class testFile{.Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...