您的位置:首页 > 其它

输入/输出流和文件操作

2015-09-10 18:50 507 查看
一、流的概念

流:对数据操作的对象。

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

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

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

字节流以字节为基本单位进行处理,也称为原始数据,适合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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: