IO操作是指输入和输出流的操作,相对于内存而言,当我们从数据源中将数据读取到内存中,就是输入流,也叫读取流。
当我们将内存中处理好的数据写入数据源,就是输出流,也叫写入流。
流按照内容分类:字节流、字符流、对象流。
按照方向分:输入流、输出流
按照数据大小分:字节流、字符流
按照功能分:节点流、处理流
其实真正的流只有一种:字节流。 数据的传输在底层都是以二进制方式传输。所以无论是哪种流都是字节流。而字符流和对象流都是在字节流的基础上做了一层封装,以便对字符数据和对象数据进行操作。
所有字节流的父类:inputstream和outputstream
所有字符流的父类:Reader和Writer
流操作的步骤:
1.建立流:建立内存和数据源之间传输数据的通道;
2.操作流:操作传输的数据;
3.关闭流:关闭内存和数据源之间的通道;
建立流:
InputStream in=new FileInputStream(文件地址);
in.read();------>返回的是数据 in.close----------->关闭流
当操作文件流时,如果文件不存在,读取流时会抛出 File NotFoundException;
int n=0;
byte[] bytes=new byte[1024];
while(n=in.read(bytes)!=-1){ // 如果等于1,读取完毕
system.out.printle(new String(bytes,"gbk"));
}
写入流:
OutputStream out=null;
out=new FileOutputStream("txt"); 如果不写第二个参数,则为覆盖 如果第二个参数为true,则表示以追加的方式写入数据
out=new fileOutStream("atm.txt",true);
out.writer("字符串".getBytes());
流使用完毕后必须关闭,如果不关闭会浪费内存资源,而且写入流可能写不进数据。先关闭写入流,后关闭读取流。后建立先关闭。
字符流:
BfferedReader 加强类,缓冲读取流。
Reader r=null;
BufferReader b=null;
r=new FileReader("txt");
b=new BufferedReader(r);
String s=" ";
while((s=b.readLine()!=null){ }
写入字符流:
w.write();------直接写入字符串
w.flush();------刷新流