Java输入数据流详解

发表于:2009-8-26 10:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

#
java

  Java输入数据流

  在Java中,我们把能够读取一个字节序列的对象称作一个Java输入数据流;而我们把够写一个字节序列称作一个输出流。它们分别由抽象类 InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。所以Java 引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。

  Java.io包简介

  JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。

  InputStream类和OutputStream类

  InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有Java输入数据流都具有的共通特性。

  java.io.InputStream的方法如下:

  public abstract read()throws IOException

  读取一个字节并返回该字节,如果到输入源的末则返回-1.一个具体的Java输入数据流需要重载此方法,以提供 有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。

  public int read(byte[] b)throws IOException

  把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。

  public abstract int read(byte[] b,int off,int len)throws IOException

  把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1. 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。

  public long skip(long n)throws IOException

  略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N.

  public int available()throws IOException

  read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写

  /*
  * Created on 2005-3-10
  * To change the template for this generated file go to
  * Window>Preferences>Java>Code Generation>Code and Comments
  */
  package mytestfiles;
  import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileReader;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.io.PrintWriter;
  /**
  * @author zhangqinglin
  * To change the template for this generated type comment go to
  * Window>Preferences>Java>Code Generation>Code and Comments
  */
  public class Files
  {
  public static void main(String[] args) throws IOException
  {
  Files f = new Files();
  // System.out.println(f.readFile("f:\\LinkFile.java"));
  // f.readAllFile("f:\\","LinkFile.java");
  // f.readLineFile("f:\\","LinkFile.java");
  // System.out.println(f.fileIsNull("f:\\","122.txt"));
  // f.readFolderByFile("F:\\PDF");
  // System.out.println(f.createAndDeleteFolder("ss","f:\\"));
  // System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat"));
  String[] ss = new String[50];
  for(int i=0;i{
  ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i;
  }
  f.writeFile("f:\\ss\\","TestFile.txt",ss);
  } 


31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号