当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java的输入流[Java编程]

赞助商链接



  本文“java的输入流[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
当然,我们常常想做的一件事情是将格局化的输出打印到掌握台,但那已在第5章成立的com.bruceeckel.tools中得到了简化.
第1到第4部份演示了输入流的成立与利用(固然第4部份展示了将输出流作为一个测试工具的简单利用).

1. 缓冲的输入文件
为翻开一个文件以便输入,需求利用一个FileInputStream,同时将一个String或File对象作为文件名利用.为提高速度,最好先对文件举行缓冲处理,从而得到用于一个BufferedInputStream的构建器的后果句柄.为了以格局化的情势读取输入数据,我们将那个后果句柄赋给用于一个DataInputStream的构建器.DataInputStream是我们的终究(final)对象,并是我们举行读取操作的接口.
在这个例子中,只用到了readLine()办法,但理所当然任何DataInputStream办法都可以采取.一旦到达文件末尾,readLine()就会返回一个null(空),以便中止并退出while循环.
“String s2”用于堆积完好的文件内容(包含必须增添的新行,因为readLine()去除了那些行).随后,在本程序的背脸部份中利用s2.最后,我们调用close(),用它关闭文件.从技术上说,会在运行finalize()时调用close().并且我们但愿一旦程序退出,就发生这种情形(无论能否举行垃圾汇集).但是,Java 1.0有一个非常突出的错误(Bug),造成这种情形不会发生.在Java 1.1中,必须明确调用System.runFinalizersOnExit(true),用它保证会为系统中的每个对象调用finalize().但是,最安全的办法还是为文件明确调用close().

2. 从内存输入
这一部份采取已经包含了完好文件内容的String s2,并用它成立一个StringBufferInputStream(字串缓冲输入流)——作为构建器的参数,要求利用一个String,而非一个StringBuffer).随后,我们用read()顺次读取每个字符,并将其发送至掌握台.注意read()将下一个字节返回为int,所以必须将其造型为一个char,以便精确地打印.

3. 格局化内存输入
StringBufferInputStream的接口是有限的,所以普通需求将其封装到一个DataInputStream内,从而加强它的本领.但是,若挑选用readByte()每次读出一个字符,那么全部值都是有效的,所以不可再用返回值来侦测什么时刻完毕输入.相反,可用available()办法判断有多少字符可用.下面这个例子展示了若何从文件中一次读出一个字符:
//: TestEOF.java
// Testing for the end of file while reading
// a byte at a time.
import java.io.*;

public class TestEOF {
  public static void main(String[] args) {
    try {
      DataInputStream in = 
        new DataInputStream(
         new BufferedInputStream(
          new FileInputStream("TestEof.java")));
      while(in.available() != 0)
        System.out.print((char)in.readByte());
    } catch (IOException e) {
      System.err.println("IOException");
    }
  }
} ///:~
注意取决于当前从什么媒体读入,avaiable()的工作方法也是有所辨别的.它在字面上意味着“可以不受阻塞读取的字节数目”.对一个文件来说,它意味着整个文件.但对一个差别种类的数据流来说,它却大概有差别的含义.因此在利用时应考虑全面.
为了在这样的情形下侦测输入的完毕,也可以通过捕捉一个违例来实现.但是,若真的用违例来掌握数据流,却显得有些大材小用.

4. 行的编号与文件输出
这个例子展示了若何LineNumberInputStream来跟踪输入行的编号.在这里,不可简单地将全部构建器都组合起来,因为必须保持LineNumberInputStream的一个句柄(注意这并非一种担当环境,所以不能简单地将in4造型到一个LineNumberInputStream).因此,li包容了指向LineNumberInputStream的句柄,然后在它的底子上成立一个DataInputStream,以便读入数据.
这个例子也展示了若何将格局化数据写入一个文件.首先成立了一个FileOutputStream,用它同一个文件衔接.考虑到效率方面的缘由,它生成了一个BufferedOutputStream.这几近必定是我们普通的做法,但却必须明确地这样做.随后为了举行格局化,它转换成一个PrintStream.用这种方法成立的数据文件可作为一个原始的文本文件读取.
标志DataInputStream什么时刻完毕的一个办法是readLine().一旦没有更多的字串可以读取,它就会返回null.每个行城市伴随自己的行号打印到文件里.该行号可通过li查询.
可看到用于out1的、一个明确指定的close().若程序预备掉回头来,并再次读取相同的文件,这种做法就显得相当有效.但是,该程序直到完毕也没有查抄文件IODemo.txt.正如从前指出的那样,假如不为自己的全部输出文件调用close(),便大概发现缓冲区不会得到革新,造成它们不完好.
  以上是“java的输入流[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .