IO流实际上就是文件与程序之间的关系,数据由程序走向文件的过程称为输出流,数据由文件走向程序的过程称为输入流。IO流按照流动数据单位又可分为字节流和字符流,如字面意思,字节流就是一个字节一个字节的传输,字符流就是一个字符一个字符的传输。按照功能又可分为节点流和处理流,节点流适合直接草最数据读写的流类如FileInputStream,处理流对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能,如BufferedInputStream。
字节流读写文本文件的写法
(1)使用字节流类FileInputStream读文本文件
FileInputStream称为文件输入流,它是字节输入流InputStream抽象类的一个子类,它的作用是将文件中的数据输入到内部存储器(简称内存)中,可以利用它来读取文本文件中的数据,具体实现步骤如下:
1)导入相关的类
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
2)构造一个文件输入流对象
InputStream fileObject = new FileInputStream("text.txt");//此时的文件输入流对象fileObject就和源数据源(text.txt)关联起来。
3)利用文件输入流类的方法读取文本文件中的数据
fileObject.available();//可读取的字节
fileObject.read();//读取文件的数据
4)关闭文件输入流对象
fileObject.close();
(2)使用字节流类FileOutputStream写文本文件
FileOutputStream称为文件输出流,它是字节输出流OutputStream抽象类的子类,它的作用是把内存中的数据输出到文件中,可以利用它把内存中的数据写入到文本文件中,具体实现步骤如下:
1)导入相关的类
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
2)构造一个文件输出流对象
OutputStream fos = new FileOutnputStream("text.txt");//此时的文件输出流对象fos就和目标数据源(text.txt)关联起来。
3)利用文件输出流类的方法把数据写入到文本文件中。
String str = "好好学习Java";
byte[] words = str.getBytes();
fos.write(words,0,words.length);//利用write方法将数据写入到文件中去
4)关闭文件输入流对象
fos.close();
字符流读写文本文件的方法
(1) 使用字符流类BufferedReader和FileReader读文本文件
BufferedReader和FileReader两个类都是Reader抽象类的子类,它们可以通过字符流的方式读取文件,并使用缓冲区,提高了读文本文件的效率。读取文本文件的具体步骤如下:
1)导入相关的类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
2)构造一个BufferedReader对象
FileReader fr = new FileReader("mytest.txt");
BufferedReader br = new BufferedReader(fr);
3)利用BufferedReader类的方法读取文本文件中的数据
br.readLine();//读取一行数据,返回字符串
4)关闭相关的流对象
br.close();//后开的流先关
fr.close();//先开的流后关
(2) 使用字符流类BufferedWrite和FileWrite写文本文件
BufferedWrite和FileWrite都是字符输出流Write抽象类的子类,它们可以通过字符流的方式并通过缓冲区把数据写入文本文件,提高了写文本文件的效率。把数据写入文本文件的具体操作步骤如下:
1)导入相关的类
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
2)构造一个BufferedWriter对象
FileWriter fw = new FileWriter("mytest.txt");
BufferedWriter bw = new BufferedWriter(fw);
3)利用BufferedWriter类的方法读取文本文件中的数据
br.write("hello");//读取一行数据,返回字符串
4)相关流对象的清空和关闭
bw.flush();
bw.close();//后开的流先关
fw.close();//先开的流后关