[英]How to save an XML file in Internal Storage Android
我已经发布了一个名字相似的问题。 我试图删除它,但是由于它有答案,所以无法删除。 但是,我现在遇到的问题有所不同,因为我陷入了整个方法的困境。 对于可能出现的问题,我深表歉意,并希望您仍然可以帮助我。
这是我的代码:
public void fetchXML(){
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
xmlFactoryObject = XmlPullParserFactory.newInstance();
XmlPullParser myparser = xmlFactoryObject.newPullParser();
myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES
, false);
myparser.setInput(is, null);
parseXMLAndStoreIt(myparser);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
解释: fetchXML()
位于HandleXML class
(HandleXML.java)内,所以它不在MainActivity
,我认为这很重要,同时复制/粘贴有关如何从Web保存文件的代码(观看了教程)。 当我似乎实现如下代码时:
从ANDROID补习页面复制:
String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(string.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
我收到openFileOutput
错误。
问题:如何保存从fetchXML()
获取的InputStream
的最简单方法? 代码片段确实是一种滋味。
希望有人能帮忙。 谢谢。
用于在内部存储中创建DOM xml文件的示例:
public void CreateXmlFile(){
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
builder = dbf.newDocumentBuilder();
Document doc = builder.newDocument();
// root element
org.w3c.dom.Element root = doc.createElement("mobile-app");
doc.appendChild(root);
//create a comment
Comment comment=doc.createComment("This is comment");
//add in the root element
root.appendChild(comment);
prettyPrint(doc);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public final void prettyPrint(Document xml) throws Exception {
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "yes");
Writer out = new StringWriter();
tf.transform(new DOMSource(xml), new StreamResult(getFilesDir().getAbsolutePath() + "/newXmlFile.xml"));
System.out.println(out.toString());
}
尝试使用此方法:
public void ConvertingAnInputStreamToAFile(InputStream inputStream) throws IOException {
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
File targetFile = new File("targetFile.xml"); //<-- Your File Location here
OutputStream outStream = new FileOutputStream(targetFile);
outStream.write(buffer);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.