流是重点,要搞清楚输入流是读取源文件,输出流是写内容到目标文件
1.两种基本的流:输入流和输出流
输入流:只能从中读取字节数据,而不能向其写出数据 IR
输出流:只能向其写入字节数据,而不能从中读取数据 OW
按照流所处理的数据类型划分,可以分为:
字节流:用于处理字节数据。
字符流:用于处理Unicode字符数据。
节点流和处理流
可以从/向一个特定的IO设备(如磁盘、网络)读/写数据的流,称为节点流。节点流也被称为低级流。
实现对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读/写功能的流,称为处理流。处理流也被称为高级流。
输入流 |
输出流 |
字节流 |
字符流 |
InputStream |
OutputStream |
Reader |
Writer |
2.InputStream基本方法 IODemo
三个基本的read方法:
int read()
int read(byte[] buffer)
int read(byte[] buffer, int offset, intlength)
常见InputStream类
低级InputStream类:InputStream,ByteArrayInputStream,PipedInputStream,FileInputStream
高级InputStream类:DataInputStream,BufferedInputStream
3.OutputStream基本方法 OutputStreamDemo
三个基本的write方法:
void write(int c)
void write(byte[] buffer)
void write(byte[] buffer, int offset,int length)
其它方法
void close()
void flush() //清空内存中的缓冲区,将滞留的内容全部写入磁盘
OutputStream类
低级OutputStream:OutputStream,ByteArrayOutputStream ,PipedOutputStream
高级OutputStream:DataOutputStream,BufferedOutputStream
4.Reader/Writer
Reader/Writer处理的是字符类型的数据。它处理流的方式是以字符为单位进行的。
Reader/Writer和InputStream/OutputStream一样,也分为节点流(低级流)和处理流(高级流)。
Reader和InputStream一样,用于从流中读取数据。它和InputStream的区别在于,InputStream以字节为单位操作流,而Reader以字符为单位操作流。
Reader fr = newFileReader("C:/mydata.txt");
//将低级流的内容放到高级流中做参数
BufferedReader br = newBufferedReader(fr);
Reader相关类 ReaderDemo
低级Reader类:CharArrayReader,StringReader,PipedReader,FileReader
高级Reader类:BufferedReader,InputStreamReader,LineNumberReader
Reader常用方法
• 读取方法:
– int read():用于从流中读出一个字符,并将它返回。
– int read(char[] buffer):将从流中读出的字符放到字符数组buffer中,返回读出的字符数。
– int read(char[] buffer,intoffset,int length):将读出的字符放到字符数组的指定offset开始的空间,每次最多读出length个字符。
• 其他方法:
– void close():关闭Reader流。
– skip(long n):跳过指定的n个字符。
– boolean ready():判断流是否已经准备好被读取。
– boolean markSupported()
– void mark(int readAheadLimit)
– void reset()
Writer常用方法 *****WriterDemo*****
• 写入方法:
– void write(int c):将参数c的低16位组成字符写入到流中。
– void write(char[] buffer):将字符数组buffer中的字符写入到流中。
– void write(char[] buffer, intoffset, int length):将字符数组buffer中从offset开始的length个字符写入到流中。
– void write(String string):将string字符串写入到流中。
– void write(String string, intoffset, int length):将字符string中从offset开始的length个字符写入到流中。
• 其他方法:
– void close():和OutputStream的close方法类似。
– void flush():和OutputStream的flush方法类似。
Writer相关类
• 低级Writer类:
– CharArrayWriter
– StringWriter
– PipedWriter
– FileWriter
• 高级Writer类:
– BufferedWriter
– OutputStreamWriter
– PrintWriter
排除文本文件以外的文件都用字节流操作,如电影音乐exe文件;文本文件就用字符流操作。
字节流数据将读取到的文本信息先转换为字节,在计算机里以二进制形式表示,再将字节转换成字符显示出来
字符流,将文本内容直接在计算机里转换为字符,再显示出来,
从键盘输入数据,保存到文件中
BufferedReader reader = newBufferedReader(new InputStreamReader(System.in));
PrintWriter pw = newPrintWriter(new FileWriter(“d:\\abc.txt”));
String line = null;
while((line= reader.readLine()) != null){
if(“quit”.equals(line.toLowerCase())){
break;
}
pw.println(line);
}
pw.close();
以后网络聊天程序会用到的