Подтвердить что ты не робот

Создайте xml файл и сохраните его во внутреннем хранилище android

Я хочу проверить внутреннюю память Android, если new.xml существует (который будет создан мной), тогда он должен вернуть мне дескриптор для него, и я могу легко добавить к нему новые данные. Если это не так, 't создает новый и добавляет к нему данные.

Моя файловая структура xml будет простой.

<root>
    <record>a</record>
    <record>b</record>
    <record>c</record>
</root>

Если файл есть, я добавлю к нему новую запись. Но если это не так, я создам новый файл и добавлю к нему первую запись.

И как я смогу прочитать эти данные в arraylist. Пример с кодом будет очень благодарен заранее.

4b9b3361

Ответ 1

Это довольно просто. Это поможет вам:

String filename = "file.txt";

FileOutputStream fos;
fos = openFileOutput(filename,Context.MODE_APPEND);

XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fos, "UTF-8");
serializer.startDocument(null, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);

serializer.startTag(null, "root");

for(int j = 0; j < 3; j++)
{
    serializer.startTag(null, "record");
    serializer.text(data);
    serializer.endTag(null, "record");
}

serializer.endDocument();
serializer.flush();

fos.close();

Чтобы прочитать данные с помощью анализатора DOM:

FileInputStream fis = null;
InputStreamReader isr = null;

fis = context.openFileInput(filename);
isr = new InputStreamReader(fis);

char[] inputBuffer = new char[fis.available()];
isr.read(inputBuffer);

data = new String(inputBuffer);

isr.close();
fis.close();

/*
* Converting the String data to XML format so
* that the DOM parser understands it as an XML input.
*/

InputStream is = new ByteArrayInputStream(data.getBytes("UTF-8"));
ArrayList<XmlData> xmlDataList = new ArrayList<XmlData>();

XmlData xmlDataObj;
DocumentBuilderFactory dbf;
DocumentBuilder db;
NodeList items = null;
Document dom;

dbf = DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
dom = db.parse(is);

// Normalize the document
dom.getDocumentElement().normalize();

items = dom.getElementsByTagName("record");
ArrayList<String> arr = new ArrayList<String>();

for (int i = 0; i < items.getLength(); i++)
{
    Node item = items.item(i);
    arr.add(item.getNodeValue());
}

Ответ 2

Используйте getFilesDir(), чтобы получить путь к тому, где вы можете создавать файлы. Проверьте, существует ли файл, создав файл-объект File newXml = new File(getFilesDir+"/new.xml"). Затем проверьте, существует ли она с помощью if(newXml.exists()).

Чтобы проанализировать данные, откройте dev docs. Как вы можете видеть в примере XmlPullParser, он может возвращать список.

Ответ 3

Используйте openFileOutput для создания файла во внутреннем хранилище и getFileStreamPath для проверки наличия и работы с ними

Чтобы прочитать данные в массиве, просто откройте поток файлов и используйте любой соответствующий синтаксический анализатор XML