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流写数据的内容,下次分享字符流读数据的内容.
本文出自 “xinsz08の平行时空” 博客,请务必保留此出处http://xinsz08.blog.51cto.com/10565212/1941451