IO流是用来处理设备之间的数据传输的,诸如:文件的复制,上传下载文件
Java中的流可以从不同的角度进行分类:
- 按照流的方向不同:分为输入流和输出流。
- 按照处理数据单位的不同:分为字节流和字符流。
- 按照功能不同:分为节点流和处理流
要区分字符流和字节流,我们可以从类名来区分
类名中包含Reader:字符流 输入流
类名中包含Writer:字符流 输出流
类名中包含Input:字节流 输入流
类名中包含Output:字节流 输出流
包含Stream:字节流
今天着重来看下字符流.
Write顾名思义就是写的意思,FileWriter(String fileName) 指的是传递一个文件的名称
成员方法:
void write(String str) 往文件中写入一个字符串
void flush() 刷新该流的缓冲,把内存缓冲区中的数据刷新到新的文件中去
void close() 关闭此流,但是要先刷新它
输出流写数据的一般步骤(也是最基本的步骤)
1.创建输出流对象
2.调用输出流对象写数据的方法
3.刷新缓存,写入文件
4.释放资源.
举例:
import java.io.FileWriter; import java.io.IOException; public class DemoFileWriter { public static void main(String[] args) throws IOException { //1.创建输出流对象,导包和抛出异常(此次为演示,不解决异常) FileWriter fw = new FileWriter("a.txt"); /** * 创建输出流对象做了如下几件事情 * A.调用系统资源创建了一个文件a.txt * B.创建了输出流对象 * C.把输出流对象指向文件 */ //2.调用输出流对象写数据的方法write() 写一个字符串 fw.write("IO流大法好"); /* * 3.此时数据是写在了缓存中,所以需要做接下来的第三步,刷新缓存. */ fw.flush(); //4.通知系统释放资源,释放之后再调用writer() 就没有作用了 fw.close(); } }
这里需要区分关闭close()和刷新flush()方法的区别.
1.flush(); 刷新缓冲区,刷新后流对象还可以继续用
2.close(); 释放资源,在释放前会强制刷新缓冲区.释放后流对象就不能再使用了.
FileWriter写数据的5个方法:
1.写一个字符串数据 void write(String str);
2.写一个字符串中的一部分数据,index开始索引,len表示写几个 ,void write(String str, int len);
3.写一个字符数据, void write(int ch) 这里之所以用int,是因为char类型的数据也对应着int数值.比如
‘a‘ 97
4.写一个字符数组的数据 void write(char[] chs);
5.写一个字符数组的一部分数据,index:开始索引,len写几个 void write(char[] chs,int index,int len);
举个栗子:
import java.io.FileWriter; import java.io.IOException; public class DemoFileWriter { public static void main(String[] args) throws IOException { //1.创建输出流对象,导包和抛出异常(此次为演示,不解决异常) FileWriter fw = new FileWriter("a.txt"); // 写入一个字符串数据 void write(String str); fw.write("abcde"); //写一个字符串中的一部分数据 fw.write("abcde",1,3); //写一个字符数组数据 char[] chs = {‘a‘,‘b‘,‘c‘,‘d‘}; fw.write(chs); //写完数据不要忘记刷新和关闭,要不然文件里会没有数据 fw.flush(); fw.close(); } }
如果需要在文件中添加换行怎么办呢?
Windows中的换行: \r\n
linux 中 的换行 \n
这就是关于IO流写数据的内容,下次分享字符流读数据的内容.