0

我有一个位于 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);
    }
  }
}
4

1 回答 1

0

好的,像往常一样..没有注意到我正在附加文件

os = new BufferedOutputStream(new FileOutputStream(path,true));

应该是 os = new BufferedOutputStream(new FileOutputStream(path,false));

谢谢大家

于 2012-07-01T16:09:11.210 回答