输入/输出流和文件操作

一、流的概念

流:对数据操作的对象。

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

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

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

字节流以字节为基本单位进行处理,也称为原始数据,适合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 stub
		try {
			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 block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.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 stub
		try {
			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 block
			e.printStackTrace();
		}
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值