首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java - 为什么我一直得到-1作为in.read(buf)的值?

在Java中,当使用InputStream的read()方法读取数据时,如果返回-1,表示已经读取到了流的末尾。这意味着没有更多的数据可以读取。

在您的情况下,您一直得到-1作为in.read(buf)的值,可能是因为输入流中的数据已经被读取完毕,或者没有数据可供读取。为了解决这个问题,您可以尝试以下方法:

  1. 确保输入流中有数据可供读取。在读取数据之前,您可以使用available()方法检查流中可用的字节数。如果available()返回0,则表示没有数据可供读取。
代码语言:java
复制
if (in.available() > 0) {
    int bytesRead = in.read(buf);
}
  1. 如果您正在从一个文件或网络资源读取数据,确保您没有在读取之前到达文件或资源的末尾。
  2. 如果您正在使用循环读取数据,请确保在循环中正确处理返回-1的情况。例如,您可以使用以下代码:
代码语言:java
复制
int bytesRead;
while ((bytesRead = in.read(buf)) != -1) {
    // 处理读取到的数据
}

如果您仍然遇到问题,请提供更多关于您的代码和数据源的信息,以便我们能够更好地帮助您解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

网络编程(TCP服务端客户端互访阻塞)

,获取到InputStream对象 调用InputStream对象read()方法,读取数据得到读取长度,参数:byte[]字节数组 获取String对象,new出来,构造参数:byte[]字节数组...,new出来,构造参数:int端口号 调用ServerSocket对象accept()方法,得到Socket对象 调用Socket对象getInputStream()方法,得到输入流对象,解析输入流...调用Socket对象getOutputStream()方法,得到输出流对象,输出数据 调用Socket对象close()方法,关闭socket 调用ServerSocket对象close()方法...,关闭ServerSocket 服务端accept()方法,是阻塞式方法,会在这里等待客户端连接 Server.java import java.io.InputStream; import java.io.OutputStream..., 0, len)); Thread.sleep(10000);//睡眠10秒钟,客户端会一直等待 OutputStream out=socket.getOutputStream

1.3K30

Java中流操作以及编码解码

博客: https://huangguangda.cn/ https://huangguangda.github.io/ 前言: 编码解码:编码时将信息从一种形式变成为另一种形式,成为编码.编码为...)方法,字节数组变字符串,使用new String((byte[]))方法. java.lang类string java.lang.object->java.lang.string 实现接口: serializable...int ch1 = in.read();        System.out.println(ch1);         int ch2 = in.read();        System.out.println...= new byte[1024]; int len = in.read(buf);String str = new String(buf,0,len); fw.write(str); 字节转字符 InputStreamReader...90后帅气小伙,良好开发习惯;独立思考能力;主动并且善于沟通 简书博客: 达叔小生 https://www.jianshu.com/u/c785ece603d1 结语 下面将继续对 其他知识 深入讲解

58420

jqm文件上传,上传图片,jqm表单操作,jqmajax使用,jqm文件操作大全,文件操作demo

这一方面,一直没有做过,今天就抽出了一点时间来学习一下。现在示例已经ok了,就给大家分享一下,希望对大家有帮助。 好吧,我们先看看效果截图吧: ? 还行吧,来看页面代码: <!...java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream...; // in.read(buf) 每次读到数据存放在 buf 数组中 while( (length = in.read(buf) ) !...= -1){ //在 buf 数组中 取出数据 写到 (输出流)磁盘上 out.write(buf, 0, length); } in.close();...同时也欢迎大家多多关注博客! 资源demo下载路径:http://download.csdn.net/download/xmt1139057136/7538193 点击这里下载

80010

深入剖析Socket实现

在我们公司也曾经自己开发过长连接应用,前端是基于flash,后端是基于Java实现,自己基于TCP/IP协议制定了一套稳定,安全,可靠应用层协议,至今一直在线上运行,情况也比较稳定;在此,想基于我知识和对于...1、缓冲区和TCP          作为程序员,在使用TCP套接字时需要记住最重要一点是: 不能假设在连接一端将数据写入输出流和在另一端从输入流读取数据之间有任何一致性。          ...为了展示这种情况,考虑如下程序: byte[] buf0 = new byte[1000]; byte[] buf1 = new byte[2000]; byte[] buf2 = new byte...);    …    out.write(buf1);    …    out.write(buf2);    …    s.close();          其中,圆点代表了设置缓冲区数据代码,但不包括对...,返回为1500。

76920

Java基础重要,你不信?来试试这几个问题

Janino 不是一个开发工具, 而是作为运行时嵌入式编译器,比如作为表达式求值翻译器或类似于 JSP 服务端页面引擎。...(PrintStream)out : null; byte[] buf = new byte[buffSize]; for(int bytesRead = in.read...(buf); bytesRead >= 0; bytesRead = in.read(buf)) { out.write(buf, 0, bytesRead);...那我问问你知道任何一个框架序列化是怎么做为什么这些框架不用Java原生序列化不过分吧? Flink为什么要自己实现序列化框架?...例如:一个只包含布尔类型对象需要占用16个字节内存:对象头要占8个字节、boolean属性占用1个字节、对齐填充还要占用7个字节。 Java序列化方式存储对象存储密度是很低

73730
领券