一、IO流 1. IO流是用来处理设备之间的数据传输,java是通过流的方式完成对数据的传输。 2. 操作的基本规律 1>明确源和目的。 2>操作的数据是否是纯文本。 3>当体系明确后,明确要使用哪个具体的对象。 二、IO流结构 IO流 |---字节流 |--输入流抽象基类:InputStream |--输出流抽象基类:Outputtream |---字符流 |--输入流抽象基类:Reader |--输出流抽象基类:Writer 注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。 例 :Reader的子类FileReader Writer的子类FileWriter 三、字符流的输入与输出(演示IO流的书写规范) 例:字符流的文件复制 import java.io.*;
class IODmeo
{
public static void main(String[] args)
{
FileReader fr=null;
FileWriter fw=null;
try
{
fr=new FileReader("d:\\test.txt"); //读取d:的文件text.txt
fw=new FileWriter("test1.txt");
char [] arr =new char[1024];
while(fr.read(arr)!=-1)
fw.write(arr);
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally
{
if (fr!=null)
{
try
{
fr.close();
}
catch (IOException e1)
{
System.out.println(e1.toString());
}
}
if (fw!=null)
{
try
{
fw.close();
}
catch (IOException e2)
{
System.out.println(e2.toString());
}
}
}
}
} 四、装饰设计模式(IO流的缓冲区) 1.好处:对已有的对象进行功能的增强。装饰类通常通过构造方法来接受被装饰的对象,并基于被装饰的对象进行功能的增强。 2.与继承区别:比继承更灵活,避免了继承体系的臃肿。但因为装饰类是增强已有对象,具备的功能与已有的相同,只不过提供了更强的功能而已。通常与被装饰类属于一个体系中的。 例: class Person
{
public void chifan()
{
System.out.println("吃饭");
}
} class SuperPerson
{
private Person p;
SuperPerson(Person p)
{
this.p = p;
}
public void superChifan()
{ p.chifan();
System.out.println("睡觉");
System.out.println("打豆豆");
}
} 3.IO流的缓冲区 Reader---BufferdReader Writer---BufferdWriter InputStream---BufferdInputStream OutputStream---BufferdOutputStream 五、转换流(InputStreamReader、OutputStream) 1.意义:字符流与字节流之间的桥梁,方便了字符流与字节流之间的操作。 2.标准的输入输出流实例(获取键盘录入,控制台输出) BufferdReader bufr= new BufferdReader(new InputStreamReader(System.in)); BufferdWriter bufw= new BufferdWriter(new OutputStreamWriter(System.out)); |