学习JAVA的标准数据流和输入输出流

学习JAVA的标准数据流和输入\输出流

学习笔记宋鹤贤2011-8-29

数据流分为输入流(InputStream)和输出流(OutputScream)两大类。

采取数据流的目的是,使程序的输入\输出操作独立于相关设备。因为每个设备的实现细节由系统执行完成,所以程序中不需要关心这些细节问题,使得一个程序能够用于多种输入\输出设备,不需要对源代码甚至目标代码做任何修改,从而增强程序的可移植性。

Java的标准数据流

1、标准输入System.in

Publicintread()throwsIOException:返回读入的一个字节,如果到达留的末尾,则返回-1

2、标准输出System.out

Publicintread(byte[]i)throwsIOException:返回读入缓冲区的字节总字节数,如果因为已经到达流末尾而不再有数据可用,则返回-1

使用read()方法发生IO错误时,抛出IOException异常。

3、标准的错误输出System.err

字节流

1.字节输入流InputStream

InputStream类是抽象类,不能直接生成对象,它是所有字节输入流类的父类。该类提供了输入处理的基本方法,它的子类一般都重写这些方法。

注意:该类中的大多数方法都可能抛出IOException异常,因此调用它们时,应放在trycatch块中,捕获和处理IOException异常。

读取数据的方法

intread()throwsIOException;

intread(byte[]b)throwsIOException;

intread(byte[]b,intoff,intlen)throwsIOException;

关闭输入流

publicvoidclose()throwsIOException;

获取流中可读的字节数

publicintavailable()throwsIOException;

移动读取指针

publiclongskip(longn)throwsIOException;

标记流中的位置和重置读取位置

publicbooleanmarkSupported();

publicvoidmark(intreadlimit);

publicvoidreset();

2.字节输出流OutputStream

OutputStream类是抽象类,不能直接生成对象,它是所有字节输出流类的父类。该类提供了输出处理的基本方法,它的子类一般都重写这些方法。

输出数据的方法

voidwrite(intb)throwsIOException;

voidwrite(byte[]b)throwsIOException;

voidwrite(byte[]b,intoff,intlen)throwsIOException;

关闭输出流

publicvoidclose()throwsIOException;

清空缓冲区

publicvoidflush()throwsIOException;

文件字节输入/输出流类

文件数据流类FilelnputStreamFileOutputStream是用于进行文件输入输出的处理,其数据对象都是文件。

文件字节输入流类FileInputStream

FileInputStream用于顺序访问本地文件。它从父类InputStream中继承read()、close()等方法对本机上的文件进行操作,但不支持mark()方法和reset()方法。

构造方法

publicFileInputStream(stringname)throwsFileNotFoundException

publicFileInputStream(Filefile)throwsFileNotFoundException

读取字节的方法

publicintread()throwsIOException

publicintread(byte[]b)throwsIOException

publicintread(byte[]b,intoff,intlen)throwsIOException

例题:打开文件

importjava.io.*;

publicclassReadFileTest

{

publicstaticvoidmain(String[]args)throwsIOException

{

try

{

//创建文件输入流对象

FileInputStreamfis=newFileInputStream("ReadFileTest.java");

intn=fis.available();

byteb[]=newbyte[n];

//读取输入流

while((fis.read(b,0,n))!=-1)

{

System.out.print(newString(b));

}

System.out.println();

//关闭输入流

fis.close();

}

catch(IOExceptionioe)

{

System.out.println(ioe.getMessage());

}

catch(Exceptione)

{

System.out.println(e.getMessage());

}

}

}

available()方法得到输入流的可读取字节数,再用read(byte[]b)方法,从源程序文件ReadFileTest.java中读取文件储存到字节数组b中,然后将以b中的值构造字符串newString(b)显示在屏幕上。程序运行时,将源程序文件ReadFileTest.java的内容显示在屏幕上。

文件字节输出流FileOutputStream

FileOutputStream类用于向一个文件写数据。它从超类OutputStream中继承write()、close()等方法。

构造方法

publicFileOutputStream(Stringname)throwsFileNotFoundException

publicFileOutputStream(Filefile)throwsFileNotFoundException

publicFileOutput.Stream(Stringname,booleanappend)throwsFileNotFoundException

写入字节的方法

publicvoidwrite(intb)throwsIOException

publicvoidwrite(byte[]b)throwsIOException

publicvoidwrite(byte[]b,intoff,intlen)throwsIOException

例题12.3写入文件

importjava.io.*;

publicclassWriteFileTest

{

publicstaticvoidmain(String[]arg)

{

try

{

System.out.println("pleaseinput:");

intcount;

byteb[]=newbyte[512];

count=System.in.read(b);

//读取标准输入流

FileOutputStreamfos=newFileOutputStream("data.txt");

//建文件输出流对象

fos.write(b,0,count);

//写入文件

fos.close();

//关闭输出流

System.out.println("保存文件成功!");

}

catch(IOExceptionioe)

{

System.out.println(ioe.getMessage());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值