输入输出流总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

输入、输出流总结

一、理解数据流

流一般分为输入流(Input Stream)和输出流(Output Stream)两类。

二、Java的标准数据流

标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:

标准输入studin,对象是键盘。

标准输出stdout,对象是屏幕。

标准错误输出stderr,对象也是屏幕。

三、字节流方法

字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。

InputStream、OutputStream

FileInputStream、FileOutputStream

PipedInputStream、PipedOutputStream

ByteArrayInputStream、ByteArrayOutputStream

FilterInputStream、FilterOutputStream

DataInputStream、DataOutputStream

BufferedInputStream、BufferedOutputStream

1、InputStream 和OutputStream

read():从流中读入数据

skip():跳过流中若干字节数

available():返回流中可用字节数

mark():在流中标记一个位置

reset():返回标记过得位置

markSupport():是否支持标记和复位操作

close():关闭流

int read() :从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)。

int read(byte b[]) :读多个字节到数组中。

int read(byte b[], int off, int len):从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取得字节数。

write(int b) :将一个整数输出到流中(只输出低位字节,抽象)

write(byte b[]) :将字节数组中的数据输出到流中

write(byte b[], int off, int len) :将数组b中从off指定的位置开始,长度为len的数据输出到流中

flush():刷空输出流,并将缓冲区中的数据强制送出

close():关闭流

例:打开文件。

本例以FileInputStream的read(buffer)方法,每次从源程序文件OpenFile.java中读取512个字节,存储在缓冲区buffer中,再将以buffer中的值构造的字符串new String(buffer)显示在

屏幕上。程序如下:

import java.io.*;

public class OpenFile

{

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

{

try

{

//创建文件输入流对象

FileInputStream rf = new FileInputStream("OpenFile.java");

int n=512;

byte buffer[] = new byte[n];

while ((rf.read(buffer,0,n)!=-1) && (n>0)) //读取输入流

{

System.out.print(new String(buffer));

}

System.out.println();

rf.close();

//关闭输入流

}

catch (IOException ioe)

{

System.out.println(ioe);

}

catch (Exception e)

{

System.out.println(e);

}

}

}

例:写入文件。

本例用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,再以FileOutStream的write(buffer)方法,将buffer中内容写入文件Write1.txt中,程序如下:

import java.io.*;

public class Write1

{

public static void main(String args[])

{

try

{

System.out.print("Input: ");

int count,n=512;

byte buffer[] = new byte[n];

count = System.in.read(buffer); //读取标准输入流

FileOutputStream wf = new FileOutputStream("Write1.txt");

//创建文件输出流对象

wf.write(buffer,0,count); //写入输出流

wf.close();

//关闭输出流

System.out.println("Save to Write1.txt!");

}

catch (IOException ioe)

{

System.out.println(ioe);

}

catch (Exception e)

{

System.out.println(e);

}

}

}

2、管道流

管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。java.io 中提供了类PipedInputStream和PipedOutputStream作为管道的输入/输出流

管道输入流作为一个通信管道的接收端,管道输出流则作为发送端。管道流必须是输入输出

相关文档
最新文档