2017-04-14 37 views
-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; 
} 

因爲我打開它一次,所以我認爲沒有錯的代碼,但我可能是錯的。

+0

您的代碼中肯定存在一些錯誤。但我不明白你怎麼認爲我們可以理解它有什麼問題?心靈感應? –

+0

@VladMatvienko對不起,我在那裏添加了我的代碼,請查看 – Ben

+0

'在我的android設備中創建了一個輸出文件,'不要以爲忘了'fos.close();'否則該文件不完整。 「但是當我第二次打開它時,'?你無法打開該文件。讓它成爲兩倍。你只能創建一個文件。你沒有獲得它的內容。它不清楚你在說什麼樣的錯誤。什麼是確切的ertor消息。從哪個代碼? – greenapps

回答

0

我認爲它的文件太大,內存不足。發佈您的日誌或郵政編碼。

相關問題