`
flying.xu77
  • 浏览: 4709 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IO流的读取

阅读更多
int java.io.InputStream.read(byte[] b, int off, int len) throws IOException


API说明:
将输入流中最多 len 个数据字节读入字节数组。尝试读取多达 len 字节,但可能读取较少数量。以整数形式返回实际读取的字节数。
在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。

参数:
   b - 读入数据的缓冲区。
   off - 在其处写入数据的数组 b 的初始偏移量。
   len - 要读取的最大字节数。
返回:
   读入缓冲区的总字节数,如果由于已到达流末尾而不再有数据,则返回 -1。

注意点:
(1)该方法并不能保证一定能读取到len个长度,它只能保证最多读取到len个长度。尤其是网络编程时,InputStream不能保证一次读取到所有数据,有可能其他数据还在传输中。

根据api的说法执行read操作的时候会先锁定inputStream,直到调用available()得到inputStream长度的时 候才会继续read操作,而当通过网络获取inputStream时,数据不是一次获取到,available()方法返回的有可能并不是全部数据的长 度,而是已获取的数据长度,举个例子:如果数据总长度是1024字节,通过网络获取inputStream,当执行available()时,可能只获取 了100个字节,而如果byte[] 定义了200个字节长度,就会出现读不满的情况!

以下是正确的一个例子:
byte[] buffer = new byte[bufferSize];
InputStream in = socket.getInputStream();
int read = 0;
int offset = 0;
while ((read = in.read(buffer, offset, bufferSize-offset)) != -1) {
  if (read > 0) {
    offset+=read; 
  }
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java基于IO流读取文件的方法

    总的来说,Java基于IO流读取文件的过程包括以下几个步骤: 1. 获取文件路径并解码。 2. 创建`File`对象,表示要读取的文件。 3. 使用`FileInputStream`创建字节输入流,用于读取二进制数据。 4. 使用`...

    IO流读取和创建文件

    本文将详细讲解如何使用IO流来读取和创建文件,以及涉及的相关概念和技术。 首先,理解IO流的基本概念至关重要。IO流可以被视为数据传输的管道,允许我们从一个源头(如磁盘上的文件)读取数据,并将其写入目的地...

    IO流、Xml解析

    在IT领域,IO流(Input/Output Stream)和XML解析是两个重要的概念,它们在数据处理和信息交换中起着核心作用。 IO流是Java编程语言中的一个关键特性,用于处理程序与外部设备(如硬盘、网络、内存等)之间的数据...

    java IO流读取图片供前台显示代码分享

    Java IO流读取图片供前台显示代码分享 Java IO流读取图片供前台显示是指使用Java的IO流来读取图片文件,并将其提供给前台页面展示。通过本文,读者可以了解Java IO流的基本概念、IO流读取图片的实现方法,以及前台...

    IO流的读入读出

    Java中的IO流是进行输入/输出操作的核心工具,主要用于数据的传输,比如读取文件、网络通信等场景。IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理单个字节...

    使用IO流读取全国行政区划代码,写入SQL语句

    使用BufferedRead和BufferedWriter读取文件信息,拼接写入SQL语句

    java基础 IO流

    在文档的另一部分,作者列举了几个使用不同IO流读取和写入文件的示例代码。这里涉及到的字节流类包括`FileInputStream`和`FileOutputStream`,它们用于读取或写入原始字节数据。为了提高读写效率,经常使用`...

    IO流pdf宝典

    ### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...

    io流写入和读取

    "io流写入和读取"这个主题涵盖了如何使用IO流进行数据的存储和检索,通常涉及到文件操作、数据序列化以及与数据库的交互。在本篇文章中,我们将深入探讨这些关键知识点。 首先,IO流是Java中的一个基础概念,它允许...

    java io 流,文件读取操作

    Java IO 流、文件读取操作 Java IO 流是 Java 语言中的一种基本输入/输出机制,它提供了多种方式来处理输入/输出操作。在 Java 中,IO 流可以分为两大类:字节流和字符流。字节流主要用于处理二进制数据,而字符流...

    使用JavaIO流读取获得的成语库txt文件

    做成语接龙游戏时找不到合适的成语库资源,自己用文件操作获取了一个

    Java实现文件复制,File文件读取,写入,IO流的读取写入

    在Java编程语言中,文件操作是一项基础且至关...以上就是关于"Java实现文件复制,File文件读取,写入,IO流的读取写入"的主要知识点。通过理解并熟练应用这些概念和方法,开发者可以有效地处理Java环境中的文件操作。

    swingIO流实现的记事本

    《Swing IO流实现的记事本》 在Java编程领域,GUI(图形用户界面)设计是不可或缺的一部分,Swing库则是Java提供的一种强大的UI工具,用于构建桌面应用程序。本项目名为“swingIO流实现的记事本”,它巧妙地结合了...

    javaIO流操作.rar

    // //建立流 // in = new FileInputStream("D:/lileihanmeimei.mp3"); // out = new FileOutputStream("E:/t98.mp3"); // //操作流 法一 //// int b = 0; //// while((b = in.read()) != -1){ //// ...

    IO流 javaio java 流

    Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...

    java io流 xml 泛型 例子学习

    我们可以使用Java IO流读取这个文件,然后用DOM解析XML,将结果存储在一个泛型集合中。如下所示: ```java import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class Example { public...

    JavaSE超市管理系统

    通过IO流读取和更新商品数据文件,实现库存的动态管理。 2. **购物功能**:顾客选择商品,系统进行库存检查,完成购物车结算,并生成购物小票。 3. **积分系统**:每次购物后,系统自动计算并累加顾客积分。积分...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

    java之io流实例

    Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...

    JAVA IO流技术

    3. 简单的IO流程序示例:以文件读取为例,使用`FileInputStream`作为节点流从文件读取数据。通常,我们会使用循环读取数据,并在读取完成后关闭流。在更标准的实践中,我们使用`StringBuilder`存储读取的字符,并在...

Global site tag (gtag.js) - Google Analytics