Java开发的中的IO流应用是比较广泛的,有专门用来处理字符串文本的字符流,有专门用来传输视频图片等新媒体资料的字节流,我们今天就来好好研究下IO.
什么是IO流?
IO流简单来说就是Input和Output,流是指一连串流动的字符,是以先进先出方式发送信息的通道,流主要是用来处理设备之间的数据传输,
Java对于数据的操作都是通过流实现,而java用于操作流的对象都在IO包中,
根据流动方向:输入流和输出流(参照物:程序本身)
根据传输格式:字节流和字符流
字符流只用来处理文本数据,字节流用来处理媒体数据
IO体系结构?
字节流应用
FileInputStream
文件输入流,继承于InputStream类,是进行文件读操作的最基本类
作用:调用read()读文件 把硬盘中的文件读取到内存
案例:
File file = new File(“readme.txt”);
try {
// 使用File对象创建文件输入流对象,相当于打开文件
FileInputStream fis = new FileInputStream(file);
// 新建字节数组作为缓冲区
byte[] b = new byte[(int) file.length()];
// 读取文件内容到缓冲区
fis.read(b);
// 把字节数组重新构造成字符串,然后输出到控制台
System.out.println(new String(b));
// 关闭文件输入流
fis.close();
FileOutputStream
称为文件输出流,继承于OutputStream类,是进行文件写操作的最基本类;
作用:调用write()写文件 把内存中的文件读取到硬盘中来
案例: //通过文件名创建文件输出流对象
FileOutputStream fos = new FileOutputStream(“test.txt”);
//将字符串转化为字节数组
byte[] buffer = str.getBytes();
//将字节数组中包含的数据一次性写入到文件中
fos.write(buffer);
//关闭流
fos.close();
字节流实用案例完成文件的复制:
字符流应用
FileReader类和FileWriter类; 文件读取流 / 文件写入流
BufferedReader类和BufferedWriter类 缓冲读取流 / 缓冲写入流
注意:一般为了提高效率 字符流都搭配缓冲流一起使用
BufferedReader类方法:
String readLine():从缓冲流中读取一行
BufferedWriter类方法:
void write(String str):将字符创str写入到缓冲流去
void newLine() : 换行
void flush() : 刷新缓冲流的数据
字符流应用实例完成指定文件中各个字符出现的次数: