当前位置:首页 > 百科

InputStream

I来自nputStream的作用是标志那些从不同数据起源产生输入的类。这些数据起源包括(每个都有一个相关的InputStre国做法指身am子类)。

  • 中文名称 输入流
  • 外文名称 InputStream
  • 作用 用作标志
  • 学科 计算机学

java的Input转攻感保包触步Stream的类型

  InputStream的作用是标志那些从不同数据起源产生输入的类。这些数据来自起源包括(每个都有一如干维学孔友余个相关的InputStream子类):

  (1祖无圆) 字节数组

  (2) String对象

  (3) 文件

  (4) "管道",它的工作原理与现实生活中流答些的管道类似:将一些东西一端置入,它们在另一端输出。

  (5) 一个由其他种类的流组成的序列,以便我360百科们将其统一收集合接希圆二罗容利拉顶思植并到一个流内。

  (6) 其他数据集,如Internet连接等。

  除此以外,FilterInputStream也属于InputStream的一种类型,用它可为"破坏器"类提供一个基础类,以便将长余制员属性或者有用的接口同输入流连接到一起。这将在以后讨论。

ClassFunctionConstructor ArgumentsHo基互w to use it

  Byte音把百Array-InputStream

  Allows a buffer in memory 述斤台丰放作易to be used as an InputSt克养ream.

  The buffer from which to extract the byt较觉封思兵积分资es.

As a source of 令伤香态较超音川越压data. Connect it to a FilterInputStreamobject to provide a useful interface.

  百难须进相担此既十送相StringBuffer-InputStream

  Converts a Stringin跳烟紧客怕室to an InputStream径无.

  A String. The underlying 决握承几美了吧式implementation actually uses a StringBuffer.

As a source of data. Connect it to a F良钱罗本为木ilterInputStreamobject to provide a useful interface.

  File-InputStream

  For reading information from a file.

  A Stringrepresenting the file name, or a Fileor FileDescriptorobject.

As a source of data. Connect it to a FilterInputStreamobject to provide a useful interface.

  类 功能 构建器参数/如何使用

  ByteArrayInputStream 允许内存中的一个缓冲区作为InputStream使用 从中提取字节的缓冲区/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口

  StringBufferInputStream 将一个String转换成InputStream 一个String(字串)。基础的实施方案实际采用一个StringBuffer(字串缓冲)/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口

  FileInputStream 用于从文件读取信息 代表文件名的一个String,或者一个File或FileDescriptor对象/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口

  Piped-InputStream

  Produces the data that's being written to the associated PipedOutput-Stream. Implements the "piping" concept.

PipedOutputStreamAs a source of data in multithreading. Connect it to a FilterInputStreamobject to provide a useful interface.

  Sequence-InputStream

  Coverts two or more InputStreamobjects into a single InputStream.

  Two InputStreamobjects or an Enumerationfor a container of InputStreamobjects.

As a source of data. Connect it to a FilterInputStreamobject to provide a useful interface.

  Filter-InputStream

  Abstract class which is an interface for decorators that provide useful functionality to the other InputStreamclasses. See Table 10-3.

  See Table 10-3.

See Table 10-3.

  PipedInputString 产生为相关的PipedOutputStream写的数据。实现了"管道化"的概念 PipedOutputStream/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口

  SequenceInputStream 将两个或更多的InputStream对象转换成单个InputStream使用 两个InputStream对象或者一个Enumeration,用于InputStream对象的一个容器/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口

  FilterInputStream 对作为破坏器接口使用的类进行抽象;那个破坏器为其他InputStream类提供了有用的功能。参见表10.3

InputStream的使用方法

对输入文件作缓冲

  要想打开文件读取字符,你得先用String或File对象创建一个FileInputReader。为了提高速度,你应该对这个文件作缓冲,因此你得把FileInputReader的reference交给BufferedReader。由于BufferedReader也提供了readLine( )方法,因此它就成为你最终要使用的那个对象,而它的接口也成为你使用的接口了。当你读到了文件的末尾时,readLine( )会返回一个null,于是就退出while循环了。

  String s2是用来累加文件内容的(再加一个换行符,因为readLine( )会把它们都剥掉)。后面的程序都要用到这个s2。最后,用close( )来关闭文件。单从技术角度上说,程序退出的时候(不管有没有垃圾要回收)都应该调用finalize( ),而finalize( )又会调用close( )。不过各种JVM的实现并不一致,所以最好还是明确地调用close( )。

  演示了如何用System.in来生成一个能读取控制台输入的流。System.in是一个InputStream,而BufferedReader需要一个Reader作参数,所以要先通过InputStreamReader来转转手。

读取内存

  现在String s2里面已经有一个完整的文件了。因此这部分程序要用它去创建一个StringReader。然后用(StringReader的)read( )方法把字符读出来,再送到控制台上去。注意,read( )会把读出来的byte当作int,所以要想正常打印的话,你得先把它们转换成char。

读取格式化的内存

  要想读取"格式化"的数据,你就得用DataInputStream了,它是一个面向byte的I/O类 (不是面向char的),因此你只能从头到底一直用InputStream了。当然你可以把所有东西(比方说文件) 都当成byte,然后用InputStream读出来,但这里是String。要想把String变成成byte数组,可以用String的getBytes( )方法,而ByteArrayInputStream是可以处理byte数组的。到了这一步,你就不用担心没有合适的InputStream来创建DataInputStream了。

  如果你是用readByte( )逐字节地读取DataInputStream的话,那么无论byte的值是多少,都是合法的,所以你无法根据返回值来判断输入是否已经结束了。你只能用available( )来判断还有多少字符。

读取文件

  这段程序还演示了怎样往文件里面写数据。先创建一个FileWriter。BufferedWriter总是免不掉的。(试试把BufferedWriter去掉,你就能看到它对性能的影响了-- 缓冲能大幅提高I/O的性能)。然后再让PrintWriter去排版。这样就能得出能够读得懂的,普通的文本文件了。

  随着程序一行一行地写文件,我们就顺便加了一个行号。注意,我们没用LineNumberInputStream,因为这是一个傻乎乎的,没什么用的类。正如这里所看到的,要知道行号还不简单。

  输入流用完之后,readLine( )会返回null。你会发现,程序显式地调用了out1的close( ),因为如果写文件的时候不调用close( ),它是不会去清空缓冲区的,这样就有可能会落下一些东西了。

  在JAVA中,InputStream是所有字节输入流的父类。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信
上一篇:摩尔多瓦葡萄
下一篇:小穴

相关文章