IO流是用来处理设备之间的数据传输的,诸如:文件的复制,上传下载文件

Java中的流可以从不同的角度进行分类:

- 按照流的方向不同:分为输入流和输出流。

- 按照处理数据单位的不同:分为字节流和字符流。

- 按照功能不同:分为节点流和处理流



要区分字符流和字节流,我们可以从类名来区分

spacer.gif


类名中包含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流写数据的内容,下次分享字符流读数据的内容.