输入/输出流和文件操作

来源:互联网 发布:vc编程软件 编辑:程序博客网 时间:2024/05/16 17:17

一、流的概念

流:对数据操作的对象。

根据流的方向。分类:输入流和输出流。

输入流读取数据,但是不能写入数据。输出流只能写入数据,不能读取数据。

根据处理数据类型不同。分类:字节流和字符流。

字节流以字节为基本单位进行处理,也称为原始数据,适合7 位ASCII码操作;而字符流以字符为基本单位进行处理,用2字节的Unicode作为编码。

二、字节流(InputStream和OutputStream类)

InputStream是所有字节输入流的父类;OutputStream是所有字节输出流的父类。

1、InputStream类(输入流)

(1)InputStream有5个低级输入流

ByteArrayInputStream     从内存数组中读取数据字节

    FileInputStream                从本地文件系统中读取数据字节

    PipedInputStream      从线程管道中读取数据字节

    StringBufferInputStream  从字符串中读取数据字节

    SequenceInputStream     将多个InputStream合并为一个

(2)除了构造方法外,InputStream中所提供的方法如下:

int read();         //读取数据

close();  //关闭流

void mark();  //标记流

void reset();     //重置流

2、OutputStream类(输出流)

 (1)输出数据的方法如下:

void write();/写入数据

flush()l //刷新流

close(); //关闭流

字节流操作图片,代码如下:

public class PhotoDemo {public PhotoDemo() {// TODO Auto-generated constructor stub}public static void main(String[] args) {File f = new File("C://01.jpg");File f1 = new File("C://03.jpg");// TODO Auto-generated method stubtry {FileImageInputStream fiis = new FileImageInputStream(f);FileImageOutputStream fios = new FileImageOutputStream(f1);byte[] b = new byte[(int) fiis.length()];int len = 0;fiis.read(b, 0, len );while((len = fiis.read(b))!=-1){fios.write(b, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


三、字符流(Write和Reader类)

1、Write类

(1)向输出流写入字符

void writer();

(2)刷新输出流,并且输出所有被缓存的字节。

flush();

(3)关闭流

close();

2、Reader类

(1)Reader类的常用子类及其功能

CharArrayReader//从字符数组中读取数据

FileReader //从本地文件系统中读取字符序列

StringReader//从字符串中读取字符序列

PipedReader//从线程管道中读取字符序列

(2)Reader类的主要方法

read();  //读取字符

close(); //关闭流

字符流操作文件。代码如下:

public class MyTestIO {public MyTestIO() {// TODO Auto-generated constructor stub}public static void main(String[] args) {// TODO Auto-generated method stubtry {FileWriter fw = new FileWriter("E://you.txt");FileReader fr = new FileReader("E://my.txt");char[] ch = new char[5];int i = fr.read(ch);fw.write(ch, 0, i);fr.close();fw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


0 0