课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > java教程 > java IO流之字节输入流
  • java IO流之字节输入流

    发布:昆明Java培训      来源:博客园      时间:2016-11-11

  • 昆明Java培训班的老师今天给大家讲java IO流之字节输入流。

    字节输入流(InputStream)

    输入:将磁盘中的数据读入内存中

    InputStream抽象类是表示字节输入流的所有类的超类。需要定义InputStream的子类的应用程序必须始终提供返回下一个输入字节的方法。

    public abstract class InputStream implements Closeable {

    private static final int MAX_SKIP_BUFFER_SIZE = 2048;//最大缓冲区大小

    //读取一个字节的数据,并且返回读到得数据,如果返回-1,则表示读到输入流的末尾

    public abstract int read() throws IOException;

    //从输入流中读取一定量的字节,并将其存储在字节数组b中,返回实际读取的字节数,如果返回-1,则表示读到输入流的末尾

    public int read(byte b[]) throws IOException {

    return read(b, 0, b.length);

    }

    //将数据读入一个字节数组,同时返回读取的实际字节数,如果返回-1,则表示读到输入流的末尾。off指定在数组b中存放数据的起始偏移位置,len指定读取的最大字节数

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

    }

    //跳过和放弃此输入流中的n个数据字节。

    public long skip(long n) throws IOException {

    }

    //返回此输入流下一个方法调用可以不受阻塞地从此输入流读取或跳过的估计字节数。

    public int available() throws IOException {

    return 0;

    }

    //关闭此输入流并释放与该流关联的所有系统资源。

    public void close() throws IOException {}

    //在此输入流中标记当前的位置。

    public synchronized void mark(int readlimit) {}

    //将此流重新定位到对此输入流最后调用mark方法时的位置。

    public synchronized void reset() throws IOException {

    throw new IOException("mark/reset ot supported");

    }

    //测试此输入流是否支持mark和reset方法。

    public boolean markSupported() {

    return false;

    }

    }

    FileInputStream 读取文件内容:

    1 public class InputStreamTest {

    2    public static void main(String[] args) throws IOException {

    3        readOne();

    4        readByte();

    5    }

    6    //public abstract int read() throws IOException

    7    //从输入流中读取数据的下一个字节。返回0到255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值-1。

    8    //在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

    9    public static void readOne() throws IOException{

    10        InputStream is=new FileInputStream("E:\\javaTest\\1.txt");

    11        int by=0;

    12        while((by=is.read())!=-1){

    13            System.out.println((char)by);//转为char类型

    14        }

    15        is.close();

    16    }

    17    //public int read(byte[] b)throws IOException

    18    //从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。以整数形式返回实际读取的字节数。

    19    //在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。

    20    public static void readByte() throws IOException{

    21        InputStream is=new FileInputStream("E:\\javaTest\\1.txt");

    22        byte []bytes=new byte[1024];

    23        int len=0;

    24        while((len=is.read(bytes))!=-1){

    25            System.out.println(new String(bytes,0,len));

    26        }

    27        is.close();

    28    }

    29 }

    BufferedInputStream字节输入(读)缓冲流

    字节流一字读写一个数组的速度明显比一次读写一个字节的速度快,这是因为加入了数组缓冲的效果,java设计的本身也考虑到了这种情况(装饰设计模式)所以提供了字节缓冲流(BufferedInputStream)。该流仅提供缓冲区,是为提 高读写效率而设计的。真正操作文件还是需要基本流对象来实现。BufferedInputStream是InputStream的子类具有一切父类的方法。

    1    public static void bufferedInputStreamTest() throws IOException{

    2        BufferedInputStream bis=new BufferedInputStream(new FileInputStream("E:\\javaTest\\5.txt"));

    3        byte [] bytes=new byte[1024];

    4        int len=0;

    5        while((len=bis.read(bytes))!=-1){

    6            System.out.println(new String(bytes,0,len));

    7        }

    8        bis.close();

    9    }

    DataInputStream(基本数据输入流):数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。应用程序可以使用DataOutputStream(数据输出流)写入基本数据类型,然后由DataInputStream(数据输入流)读取基本数据。 类是FileInputStream的子类。

    byte b = dis.readByte();

    short s = dis.readShort();

    int i = dis.readInt();

    long l = dis.readLong();

    float f = dis.readFloat();

    double d = dis.readDouble();

    char c = dis.readChar();

    boolean bb = dis.readBoolean();

    推荐文章

上一篇:java IO流之字节流和字符流

下一篇:java IO流之字节输出流

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56