Android не создает / не читает файл - PullRequest
0 голосов
/ 22 марта 2012

Отказ от ответственности: я просмотрел много примеров и прочитал документы.

Этот вопрос включает в себя 3 класса.Мой сериализованный класс, вспомогательный класс, который обрабатывает ввод-вывод, и действие для взаимодействия.

Мой сериализованный класс выглядит примерно так:

public class EntityPlayer implements Serializable {

private static final long serialVersionUID = -7671612522335708108L;
String name = "foo";

public EntityPlayer() {
    name = "foo";

}

}

MyВспомогательный класс выглядит следующим образом (здесь выполняется тяжелый подъем):

public class Main {

static Object loadPlayer(Context c, String name) throws IOException,
        ClassNotFoundException {
    FileInputStream f = c.openFileInput(name);
    ObjectInputStream i = new ObjectInputStream(f);
    Object player = i.readObject();
    i.close();
    return player;
}

static void savePlayer(Context c, String name, EntityPlayer player) throws IOException {
    FileOutputStream f = c.openFileOutput(name, Context.MODE_PRIVATE);
    ObjectOutputStream o = new ObjectOutputStream(f);
    o.writeObject(player);
    o.flush();
    o.close();
}

}

и, наконец, вот как я получаю доступ (в скорлупе ореха):

public class DisplayInteract extends Activity implements OnClickListener {

EntityPlayer player = new EntityPlayer();  //by editing this line, my issue was fixed


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.g_interact);

    player = new EntityPlayer(ID, this);

    try {
        Main.savePlayer(player.name, player);
    } catch (IOException e) {
    }

    try {
        player = (EntityPlayer) Main.loadPlayer("Derp");
    } catch (ClassNotFoundException e) {
    } catch (IOException e) {
    }
}

}

По сути, я получаю NPE, когда я делаю какие-либо вызовы относительно сериализованного класса после его загрузки.Я знаю, что проблема заключается в том, что я сохраняю файл, потому что я могу сказать, что в Eclipse нет файлового обозревателя через Android.Я знаю, что проблема также в том, как я загружаю файл, потому что (у меня нет идеального, как), я заставил его работать в один момент (он создал файл), но я все еще не мог получить доступ к любым данным без его выбросаNPE (потому что я не обращался к классу правильно)

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Вы не указываете путь, куда файл должен быть сохранен. Используйте openFileOutput() из контекста, который сохранит его в папке данных ваших приложений.

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
1 голос
/ 22 марта 2012

Я не знаю, как вы генерируете имя файла, но вы можете убедиться, что у вас есть хранилище (свободное место / не используется USB-накопителем / и т. Д.). Попробуйте что-то вроде следующего:

    //Is external storage available?
    String state = Environment.getExternalStorageState();
    if (!Environment.MEDIA_MOUNTED.equals(state))
    {
        //If we can't get storage, let the user know
        return;
    }

    //Create the actual file
    //The file should end up in /mnt/sdcard/Android/data/your.package.name/files/
    File dir = new File(Environment.getExternalStorageDirectory() + EXTERNAL_FILES_DIR_EXTENTION);

    //Make all needed directories if they do not exist
    dir.mkdirs();

    //Create the file
    File file = new File(dir, fileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...