1
我正在尝试编写一个Android应用程序,可以将数据写入储存在SD卡上的XML文件。所有似乎都工作正常,但我的XML文件正好在1000字节截止。这里是代码:为什么我的Android上的XML文件被切断为1000字节
package brochard.chad.fieldReport;
import java.io.FileWriter;
import java.io.Serializable;
import java.io.StringWriter;
import org.xmlpull.v1.XmlSerializer;
import android.database.Cursor;
import android.os.Environment;
import android.util.Log;
import android.util.Xml;
public class XMLWriter implements Serializable {
private String filename;
XmlSerializer serializer = Xml.newSerializer();
private StringWriter output = new StringWriter(100);
FieldReportDBAdapter dbA;
static final long serialVersionUID = 0;
public XMLWriter (String _filename){
filename = _filename;
}
public boolean beginXMlreport(Cursor cursor) {
try {
serializer.setOutput(output);
serializer.startDocument("UTF-8", false);
serializer.setPrefix("w", "http://schemas.microsoft.com/office/word/2003/wordml");
serializer.startTag("w", "wordDocument");
serializer.startTag("w", "styles");
serializer.startTag("w", "style");
serializer.attribute("w", "type", "paragraph");
serializer.attribute("w", "styeId", "ReportHeading");
serializer.startTag("w", "name");
serializer.attribute("w", "val", "Heading");
serializer.endTag("w", "name");
serializer.startTag("w", "pPr");
serializer.startTag("w", "jc");
serializer.attribute("w", "val", "center");
serializer.endTag("w", "jc");
serializer.endTag("w", "pPr");
serializer.startTag("w", "rPr");
serializer.startTag("w", "b");
serializer.attribute("w", "val", "on");
serializer.endTag("w", "b");
serializer.startTag("w", "sz");
serializer.attribute("w", "val", "48");
serializer.endTag("w", "sz");
serializer.endTag("w", "rPr");
serializer.endTag("w", "style");
serializer.startTag("w", "style");
serializer.attribute("w", "type", "paragraph");
serializer.attribute("w", "styleId", "SubHeading");
serializer.startTag("w", "name");
serializer.attribute("w", "val", "SubHeading");
serializer.endTag("w", "name");
serializer.startTag("w", "pPr");
serializer.startTag("w", "jc");
serializer.attribute("w", "val", "left");
serializer.endTag("w", "jc");
serializer.endTag("w", "pPr");
serializer.startTag("w", "rPr");
serializer.startTag("w", "b");
serializer.attribute("w", "val", "on");
serializer.endTag("w", "b");
serializer.startTag("w", "sz");
serializer.attribute("w", "val", "36");
serializer.endTag("w", "sz");
serializer.endTag("w", "rPr");
serializer.endTag("w", "style");
serializer.startTag("w", "style");
serializer.attribute("w", "type", "paragraph");
serializer.attribute("w", "styleId", "Text");
serializer.startTag("w", "name");
serializer.attribute("w", "val", "Text");
serializer.endTag("w", "name");
serializer.startTag("w", "pPr");
serializer.startTag("w", "jc");
serializer.attribute("w", "val", "left");
serializer.endTag("w", "jc");
serializer.endTag("w", "pPr");
serializer.startTag("w", "rPr");
serializer.startTag("w", "b");
serializer.attribute("w", "val", "off");
serializer.endTag("w", "b");
serializer.startTag("w", "sz");
serializer.attribute("w", "val", "24");
serializer.endTag("w", "sz");
serializer.endTag("w", "rPr");
serializer.endTag("w", "style");
serializer.endTag("w", "styles");
serializer.startTag("w", "body");
serializer.startTag("w", "p");
serializer.startTag("w", "pPr");
serializer.startTag("w", "pStyle");
serializer.attribute("w", "val", "ReportHeading");
serializer.endTag("w", "pStyle");
serializer.endTag("w", "pPr");
serializer.startTag("w", "r");
serializer.startTag("w", "t");
serializer.text("Field Report");
serializer.startTag("w", "br");
serializer.endTag("w", "br");
serializer.endTag("w", "t");
serializer.endTag("w", "r");
serializer.endTag("w", "p");
serializer.startTag("w", "p");
serializer.startTag("w", "pPr");
serializer.startTag("w", "pStyle");
serializer.attribute("w", "val", "SubHeading");
serializer.endTag("w", "pStyle");
serializer.endTag("w", "pPr");
serializer.startTag("w", "r");
serializer.startTag("w", "t");
serializer.text("Project Title");
serializer.endTag("w", "t");
serializer.endTag("w", "r");
serializer.endTag("w", "p");
serializer.startTag("w", "p");
serializer.startTag("w", "pPr");
serializer.startTag("w", "pStyle");
serializer.attribute("w", "val", "Text");
serializer.endTag("w", "pStyle");
serializer.endTag("w", "pPr");
serializer.startTag("w", "r");
serializer.startTag("w", "t");
serializer.text("Owner: "+
cursor.getString(FieldReportDBAdapter.OWNER_COLUMN));
serializer.startTag("w", "br");
serializer.endTag("w", "br");
serializer.text("High Temp: "+
cursor.getString(FieldReportDBAdapter.HIGHTEMP_COLUMN));
serializer.startTag("w", "br");
serializer.endTag("w", "br");
serializer.text("Low Temp: "+
cursor.getString(FieldReportDBAdapter.LOWTEMP_COLUMN));
serializer.startTag("w", "br");
serializer.endTag("w", "br");
serializer.text("Conditions: "+
cursor.getString(FieldReportDBAdapter.CONDITIONS_COLUMN));
serializer.startTag("w", "br");
serializer.endTag("w", "br");
serializer.text("Notes: "+
cursor.getString(FieldReportDBAdapter.NOTES_COLUMN));
serializer.startTag("w", "br");
serializer.endTag("w", "br");
serializer.endTag("w", "t");
serializer.endTag("w", "r");
serializer.endTag("w", "p");
serializer.endTag("w", "body");
serializer.endTag("w", "wordDocument");
return true;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public boolean WriteToFile() {
FileWriter fWriter;
try{
fWriter = new FileWriter(Environment.getExternalStorageDirectory()+
"/"+filename);
Log.v("OUTPUT",output.toString());
fWriter.write(output.toString());
fWriter.flush();
fWriter.close();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
}
任何帮助非常感谢! logcat以我想要的方式显示文件,它只是不会到达文件。
确认:你说整个事情都被记录下来,但是XML文件只包含前1000个字节。那是对的吗? – 2012-04-19 03:28:25
当你说1000个字节时,你的意思是输出对象在1000bytes时被截断,或者在logcat中只能看到1000个字节? – Shubhayu 2012-04-19 04:39:57
创建的文件恰好为1000字节。它截断了字符串的其余部分。在logcat中,整个字符串都在那里。 – 2012-04-19 22:37:34