IO
一、File类
在说IO之前我们先了解一个类,在java.io包中有一个很重要的类,类名为File,File类的对象可以表示文件,还可以表示目录(即文件夹),在程序中一个File类对象可以代表一个文件或目录。File对象可以对文件或目录的属性进行操作,如:文件名、文件大小等,但是不能对文件的数据进行操作,不能读出或者写入文件。
File file=new File("文件路径");
File类为操作文件提供的方法在API都可以找到,这里不做过多描述了。
二、IO流
输入/输出(I/O) 把电脑硬盘上的数据读到程序中,称为输入,即input,进行数据的read操作从程序往外部设备写数据,称为输出,即output,进行数据的write操作。
字节流与字符流
所谓流,其实是读写文件的操作类,与File不同,它可以读出或者写入文件,在输入或者输出时有两种不同的数据传输方式,一个是字节传输,一个是字符传输,所以就有字节流和字符流。
字节输入流:IputStream 抽象类为所有字节输入流的父类 共有方法:read()
字节输出流:OutputStream 抽象类为所有字节输出流的父类 共有方法:write()
FileInputStream in=new FileInputStream("E:/demo.txt");
int b=in.read();//返回文件字节数
FileOutputStream out=new FileOutputStream("E:/demo1.txt");//输出文件会自动创建
out.write(b);
字符输入流:Reader 抽象类为所有字符输入流的父类 共有方法:read()
字符输出流:Writer 抽象类为所有字符输出流的父类 共有方法:write()
根据封装类型不同流又分为
节点流 处理流
节点流:
如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,
则称为节点流。
处理流:
如果流封装的是其它流对象,称为处理流。 处理流提供了缓冲功能,
提高读写效率,同时增加了一些新的方法
字节流输入输出的处理流分别是
BufferedInputStream和BufferedOutputStream
字符流输入输出的处理流分别是
BufferedReader和BufferedWriter