当前位置: 首页 > 知识库问答 >
问题:

如何在android中将inputstream登录到文件,然后对其进行解析

夹谷俊远
2023-03-14

我从HttpUrlConnection(connection.getInputStream())接收到一个InputStream,并使用DocumentBuilder(documenbtBuilder.parse(InputStream))解析输入流。在解析之前,我想将接收到的数据写入日志文件。当我这样做的时候,我得到了组织。xml。萨克斯。SAXParseException:解析方法中出现意外的文档结束异常。如果不写入文件,我的代码可以正常工作,但我需要记录接收到的数据。

请在下面找到写入文件的代码:

  final InputStream input = connection.getInputStream();

    writeLogInfo(input);

    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(input);

    //Method that writes tito log file.

    private void writeLogInfo(InputStream input){

     OutputStream os = new FileOutputStream("mylogfile.txt");

     byte[] buffer = new byte[1024];

     int byteRead;

     while((byteRead = input.read(buffer)) != -1){
        os.write(buffer,0,byteRead);
     }

     os.flush();

     os.close();

   }

我怀疑这是因为多次使用InputStream,因为当我不涉及writeLogInfo()时,代码会工作。我没有关闭代码中任何地方的inputhtml" target="_blank">stream。我做错了什么?

共有2个答案

赵智
2023-03-14

您确定文件大小在1024字节以下吗。如果不是,为什么不将“inputstream”放入BufferredInputstream,并创建字节数组。。

BufferedInputStream bin= new BufferedInputStream(new DataInputStream(input));
byte[] buffer= new byte[bin.available()];
bin.read(buffer);
os.write(buffer);
......
......
bin.close();
......
盖晋
2023-03-14

当您将内容写入文件时,您将到达输入流的末尾。

因此,在这之后,当您尝试解析时,您会得到异常。

在将inputstream传递给documentbuilder之前,需要在inputstream上使用标记重置方法。

此外,首先需要检查输入流是否支持标记。

这是javadoc,供您参考

http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html

 类似资料:
  • 问题内容: 我有一个pandas数据框。我想按升序打印其列之一的唯一值。这就是我的做法: 问题是我得到了输出。 问题答案: 从iterable中返回一个新的排序列表。 码 输出值

  • 对于一个学校项目,我们正在建立一个网站和应用程序。我们使用一个phpmyadmin数据库为我们的网站,我们正试图创建一个登录我们的应用程序(android studio,Java)使用这个数据库。因此,我们试图在android studio中使用http post请求到我们的Web服务器,从而Java到PHP。但是,我没有很多编码方面的经验,也不能真正在网上找到我要找的东西。 那么,我该从哪里开始

  • 问题内容: 这是我的代码,它有效!但我希望能够根据名称,大小,修改日期等对文件列表进行排序 问题答案: 您可以定义许多不同的类来进行不同的比较,例如: 然后,您只需将它们换出: 要么

  • 我想收集数据,并在一个加密的文件中写入使用公钥(在Android中)。然后将文件发送到PC机读取。在我的PC中,我也需要创建一个应用程序来解密文件。我该如何做以及如何安全地共享密钥?

  • 多年来,我一直在使用Tomcat、JBoss、Glassfish等。在这些容器中,我使用了Log4j、JDK日志等,非常简单。 我很难从Weblogic 12c中的应用程序中获得任何日志记录。日志被写入stderr,而不是日志文件。 在管理控制台日志记录实现:JDK严重性级别:INFO 如果我按照Log4J Weblogic配置过程配置Log4J,行为是相同的。

  • 我有一个logger配置,它基本上将根记录器的所有日志写入一个基本日志文件。我总是使用此处。 对于我想记录的一些特定事件,请使用不同的文件。我怎么能在属性文件中配置这样一个记录器(例如给它一个名字,然后我可以从代码中引用)?