openFileOutput выдает исключение - PullRequest
1 голос
/ 01 декабря 2010

Я пишу данные в XML-файлы в моем приложении для Android. Я посмотрел, как правильно сделать файл ввода-вывода и обнаружил, что мне нужно использовать openFileOutput. Насколько я могу судить, в моем коде нет ничего плохого, но он продолжает выдавать исключение в строке, где у меня есть try-catch, обернутый в следующем коде:

public void writeSearchXML(ArrayList<String> searches, String file)
        throws Exception {
    // try {
    // File newxmlfile = new File(file);
    // newxmlfile.createNewFile();
    // } catch (Exception e) {
    // }
    try {
        // THE FOLLOWING LINE THROWS AN EXCEPTION EVERY TIME
        FileOutputStream out = openFileOutput(file,
                Context.MODE_WORLD_WRITEABLE);
    } catch (Exception e) {
        throw new Exception("Failing on fileoutput stream searches.");
    }
    FileOutputStream fOut = openFileOutput(file,
            Context.MODE_WORLD_READABLE);
    // we create a XmlSerializer in order to write xml data
    XmlSerializer serializer = Xml.newSerializer();
    // we set the FileOutputStream as output for the serializer, using UTF-8
    // encoding
    serializer.setOutput(fOut, "UTF-8");
    // Write <?xml declaration with encoding (if encoding not null) and
    // standalone flag (if standalone not null)
    serializer.startDocument(null, Boolean.valueOf(true));
    // set indentation option
    serializer.setFeature(
            "http://xmlpull.org/v1/doc/features.html#indent-output", true);
    // start a tag called "root"
    serializer.startTag(null, "searches");
    for (String search : searches) {
        serializer.startTag(null, "search");
        serializer.text(search);
        serializer.endTag(null, "search");
    }
    // // i indent code just to have a view similar to xml-tree
    // serializer.startTag(null, "username");
    // serializer.text(username);
    // serializer.endTag(null, "username");
    // serializer.startTag(null, "password");
    // serializer.text(password);
    // serializer.endTag(null, "password");
    // //serializer.attribute(null, "attribute", "value");
    serializer.endTag(null, "searches");
    serializer.endDocument();
    // write xml data into the FileOutputStream
    serializer.flush();
    // finally we close the file stream
    fOut.close();
}

Единственная проблема во всем этом коде - только одна строка. Я искал по всему интернету, и я не смог найти решение. Что я могу сделать, чтобы это исправить?

ОБНОВЛЕНИЕ: генерируемое исключение является fileNotFound исключением. Это заставляет меня поверить, что функция openFileOutput на самом деле не создает файл, как это говорится в описании. Что я могу сделать в Android, чтобы создать файл без использования openFileOutput?

1 Ответ

0 голосов
/ 02 декабря 2010

Я нашел ответ здесь: android, что не так с openFileOutput?

openFileOutput должен вызываться с использованием контекста действия.

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