当前位置: 首页 > 面试题库 >

尝试从套接字读取时发生java.io.EOFException

曾成天
2023-03-14
问题内容

我不知道为什么出现java.io.EOFException。从服务器获取二进制流后,我想写一个文件。

这是我的代码

inputStream = new DataInputStream(new BufferedInputStream(connection.getInputStream()));
FileOutputStream fos = new FileOutputStream("D:/Apendo API resumable download.txt");

byte b = inputStream.readByte();
while(b != -1){
        fos.write(b);
        b = inputStream.readByte();                       
       }
fos.close();

堆栈跟踪

java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:267)
at HttpRequestJSON.JSONRequest.sendRequest(JSONRequest.java:64)
at HttpRequestJSON.Main.main(Main.java:56)

问题答案:

它说,DataInputStream.readByte API不会在EOS上返回-1

返回:此输入流的下一个字节为带符号的8位字节。

抛出:EOFException-如果此输入流已到达末尾。

假定使用DataInputStream.readByte时,我们知道流中还有多少字节。否则,我们可以使用EOFException作为EOS的指标。

顺便说一句,如果您使用read(),则在EOS上将获得-1,而没有EOFException



 类似资料:
  • 我想从netty确认,在我关闭连接之前发生了读取事件。不管它是以字节为单位读取还是发生错误。 通过挖掘netty代码,我不相信以下保证操作顺序: 由于读取事件在netty的事件循环中不是“任务”,因此关闭任务有可能在读取事件之前执行。 没有可以使用的“阅读未来”。所以我的问题是:保证读取事件在关闭通道之前发生的最佳方法是什么?" 如果使用自动读取:如果netty当前在它的任务循环中通过线路写入数据

  • 这是来自.properties得my DB配置: 这是config.xml: 实际上,我可以很容易地访问我们的本地web应用程序,并且可以在日志中看到到DB的连接跟踪,但对于批处理来说,情况并非如此。 在我有了这个之后: 有人帮忙吗?

  • socket_read和socket_recv之间有什么区别?我正在尝试使用PHP套接字,但使用socket_read时收到了以下警告: 请帮帮我!

  • 问题内容: 我有一个侦听某些x端口的套接字。 我可以从客户端应用程序将数据发送到套接字,但是无法从服务器套接字获得任何响应。 ..此代码部分从服务器读取数据。 但是,直到关闭服务器上的套接字,我才能从服务器读取任何内容。服务器代码不受我控制,无法对其进行编辑。 如何从客户端代码中克服这个问题。 谢谢 问题答案: 为了在客户端和服务器之间进行通信,必须明确定义协议。 客户端代码将阻塞,直到从服务器收

  • 我正在创建一个android应用程序,它以json格式显示从在线API获取的天气数据。为此,我使用的是格森图书馆。 我有以下JSON字符串,我从一个map对象中获得: 它包含以下值: 但是,当我尝试使用该字符串创建另一个贴图对象时,我遇到了一个异常。 异常logcat报告: 通用域名格式。谷歌。格森。JsonSyntaxException:com。谷歌。格森。流动MalformedJsonExce

  • 问题内容: 在 Android平台上从InputStream读取时,我遇到一个奇怪的问题。我不确定这是否是Android特有的问题,或者 总体上我做错了什么。 唯一特定于Android的是此调用: 这会从Android资产返回文件的InputStream。无论如何, 这是我遇到的问题: 当read()执行时,它抛出IOException。奇怪的是, 如果我进行了两个连续的单字节读取(或任意数量的单