-2
我在我的android設備上創建了一個輸出文件,但是當我第二次打開它的時候,我得到了這個錯誤,當獲取文件內容錯誤時,我可以在debug env下看到這個文件內容,任何人都知道我的輸出文件發生了什麼?任何回覆將被迫獲取文件內容時發生錯誤?不知道爲什麼
private ForeignObjectParser parser;
private List<ForeignObjectModel> foreignObjects;
@Override
public void onClick(View v) {
try {
InputStream is = getAssets().open("ForeignObjects.xml");
parser = new ForeignObjectParserImp();
foreignObjects = parser.parse(is);
String xml = parser.serialize(foreignObjects); //
FileOutputStream fos = new FileOutputStream(new File(getExternalFilesDir(null), "foreign.html"));
fos.write(xml.getBytes("UTF-8"));
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
public class ForeignObjectParserImp implements ForeignObjectParser {
@Override
public List<ForeignObjectModel> parse(InputStream is) throws Exception {
List<ForeignObjectModel> foreignObjects = null;
ForeignObjectModel foreignObject = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "UTF-8");
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
foreignObjects = new ArrayList<ForeignObjectModel>();
break;
case XmlPullParser.START_TAG:
if (parser.getName().equals("foreignObject")) {
foreignObject = new ForeignObjectModel();
} else if (parser.getName().equals("id")) {
eventType = parser.next();
foreignObject.setId(parser.getText());
} else if (parser.getName().equals("value")) {
eventType = parser.next();
foreignObject.setValue(parser.getText());
} else if (parser.getName().equals("x")) {
eventType = parser.next();
foreignObject.setX(parser.getText());
} else if (parser.getName().equals("y")) {
eventType = parser.next();
foreignObject.setY(parser.getText());
} else if (parser.getName().equals("width")) {
eventType = parser.next();
foreignObject.setWidth(parser.getText());
} else if (parser.getName().equals("height")) {
eventType = parser.next();
foreignObject.setHeight(parser.getText());
} else if (parser.getName().equals("font-size")) {
eventType = parser.next();
foreignObject.setFontsize(parser.getText());
} else if (parser.getName().equals("font")) {
eventType = parser.next();
foreignObject.setFont(parser.getText());
} else if (parser.getName().equals("alignment")) {
eventType = parser.next();
foreignObject.setAlignment(parser.getText());
} else if (parser.getName().equals("origzoom")) {
eventType = parser.next();
foreignObject.setOrigzoom(parser.getText());
}
break;
case XmlPullParser.END_TAG:
if (parser.getName().equals("foreignObject")) {
foreignObjects.add(foreignObject);
foreignObject = null;
}
break;
}
eventType = parser.next();
}
return foreignObjects;
}
@Override
public String serialize(List<ForeignObjectModel> foreignObjects) throws Exception {
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag("", "foreignObjects");
for (ForeignObjectModel foreignObject : foreignObjects) {
serializer.startTag("", "foreignObject");
serializer.attribute("", "id", foreignObject.getId() + "");
serializer.attribute("", "x", foreignObject.getX() + "");
serializer.attribute("", "y", foreignObject.getY() + "");
serializer.attribute("", "width", foreignObject.getWidth() + "");
serializer.attribute("", "height", foreignObject.getHeight() + "");
serializer.startTag("","div");
serializer.attribute("","id",foreignObject.getId() + "Div" + "");
serializer.attribute("", "style", foreignObject.getWidth() + "");
serializer.startTag("","span");
serializer.attribute("","id",foreignObject.getId() + "Span");
serializer.attribute("","style",foreignObject.getFont() + "");
serializer.text(foreignObject.getValue());
serializer.endTag("","span");
serializer.endTag("","div");
serializer.endTag("", "foreignObject");
}
serializer.endTag("", "foreignObjects");
serializer.endDocument();
return writer.toString();
}
}
public interface ForeignObjectParser {
/**
* @param is
* @return
* @throws Exception
*/
public List<ForeignObjectModel> parse(InputStream is) throws Exception;
/**
* @param books
* @return
* @throws Exception
*/
public String serialize(List<ForeignObjectModel> books) throws Exception;
}
因爲我打開它一次,所以我認爲沒有錯的代碼,但我可能是錯的。
您的代碼中肯定存在一些錯誤。但我不明白你怎麼認爲我們可以理解它有什麼問題?心靈感應? –
@VladMatvienko對不起,我在那裏添加了我的代碼,請查看 – Ben
'在我的android設備中創建了一個輸出文件,'不要以爲忘了'fos.close();'否則該文件不完整。 「但是當我第二次打開它時,'?你無法打開該文件。讓它成爲兩倍。你只能創建一個文件。你沒有獲得它的內容。它不清楚你在說什麼樣的錯誤。什麼是確切的ertor消息。從哪個代碼? – greenapps