Этот код создает файл, но он всегда пуст.
Я видел несколько примеров использования StringWriter, но мои XML-файлы могут стать такими большими, что не представляется практичным сохранять их в записывающем устройстве, преобразовывать их в строку и затем записывать в файл. Это должен быть поток.
Или, может быть, я не знаю, о чем говорю, и полностью запутался.
private void createXMLfile(File file, long folderRoot) throws IllegalArgumentException, IllegalStateException, IOException {
// https://developer.android.com/reference/org/xmlpull/v1/XmlSerializer
// /7619893/kak-sozdat-xml-fail-v-android
file.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(file);
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fileOutputStream, G.KML.XML_ENCODING); // XML_ENCODING = "UTF-8"
serializer.startDocument(G.KML.XML_ENCODING, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startTag(null, G.KML.KML); // KML = "kml"
serializer.endTag(null, G.KML.KML);
serializer.endDocument();
serializer.flush();
fileOutputStream.flush();
fileOutputStream.close();
}
Мои права на манифест:
<!-- Following two permissions are for import/export functionality -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Этот файл записывается в:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
... но пользователь может изменить место сохранения файла.