我有一个位于 assets 文件夹中的 XML 文件。XML 文件被解析为 Object 没有问题(这意味着 XML 是 100% 正确的)。
现在我正在做的是将 XML 文件从资产文件夹复制到内部存储。当我尝试从内部存储器打开复制的 XML 文件时,我总是遇到异常。
org.jdom.input.JDOMParseException: Error on line 660: At line 660, column 8: not well-formed (invalid token)
调用此行时:
Document doc = (Document) builder.build(xmlStream); (Where xmlStream is InputStream argument)
该文件似乎被复制得很好,因为我带了xmlStream
-argument,将其转换为String,然后将其打印到屏幕上,看起来很好。他们在这里的关键是异常总是说文件的最后一个位置是错误的。因此,文件底部结束标记的最后一个字符是“>”,位于第 660 行第 8 行。
复制操作
public class InternalMemory {
private static Context mContext;
public static String INTERNAL_PATH;
static {
mContext = App.getContext();
INTERNAL_PATH = mContext.getApplicationContext().getFilesDir().toString();
}
public static void SaveStream(InputStream is,String folder,String fileName) {
String path = INTERNAL_PATH + "/"+folder+"/";
File file = new File(path);
file.mkdirs();
path += fileName;
OutputStream os;
try {
os = new BufferedOutputStream(new FileOutputStream(path,true));
write(is,os);
os.flush();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void write(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
}
}