黑马程序员技术交流社区

标题: IO流 [打印本页]

作者: zzy张    时间: 2015-9-25 23:59
标题: IO流
IO流: I: Input  O: Output
什么是输入和输出:
输入和输出问题是相对于内存而言的,如果加载硬盘上的数据到内存,那么就是输入否则就是输出
IO流的分类:
流向:
输入流和输出流
操作数据的类型:
字节流和字符流
字节流可以操作任意的数据,而字符流只能操作文本文件.
何为文本文件? 使用windows自带的记事本软件打开该文件以后,可以读懂里面的内容,那么这个文件就是文本文件


字符流和字节流如果按照流向在此进行划分的时候可以分为字符输入流和字符输出流以及字节输入流和字节输出流
字节流:
字节输入流 InputStream读
字节输出流 OutputStream写
字符流:
字符输入流 Reader读
字符输出流 Writer写



字节输出流:
OutputStream这个是抽象类,不能直接使用,所以我们使用的是它的子类是FileOutputStream
io的使用步骤:
创建对象
读/写操作
释放资源

FileOutputStream fos = new FileOutputStream("a.txt") ;

// public void write(int by):一次写一个字节
// public void write(byte[] bytes) :一次写一个字节数组
// public void write(byte[] bytes , int offset , int length ) : 一次写一个字节数组中的一部分


fos.write("你好".getBytes()) ;
fos.close() ;


实现换行写和追加写:
写入对应的换行符:  
windows换行符  \r\n
linux的换行符  \n
mac的换行符  \r
追加写: 使用带有boolean类型的变量的构造方法完成
FileOutputStream fos = new FileOutputStream("a.txt" , true) ;


读取数据:
InputStream这个是抽象类,不能直接使用,所以我们使用的是它的子类是FileInputStream

打印流:
字节打印流 PrintStream
字符打印流 PrintWriter


打印流的特点:
只有输出端,没有输入端
可以操作任意的数据类
如果启动的自动刷新可以完成自动刷新
可以操作文件的流
指的是构造方法可以直接接受文件或者文件对应的路径
那些流是操作文件流:
FileInputStream
FileOutputStream
FileReader
FileWriter
PrintStream
PrintWriter


作为Writer的子类使用
// public void write(int ch) : 一次写一个字符
// public void write(char[] ch) : 一次写一个字符数组
// public void write(char[] ch , int offset , int length) : 一次写一个字符数组中的一部分
// public void write(String str) : 一次写一个字符串
// public void write(String str , int offset , int length) : 一次写一个字符串中的一部分
启动自动刷新:
public PrintWriter(Writer out,  boolean autoFlush)
public PrintWriter(OutputStream out, boolean autoFlush)


如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。


println方法在启动了自动刷新以后可以分为
写一个字符串
刷新
换行






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2