Java基础之IO字节流
Java基础之IO字符流
以上两个链接是IO流的字节流和字符流,这篇文章将见识更加强大的流。
缓冲流也叫高效流,是对四个基本流的增强,按数据类型分为:
字节缓冲流:BufferedInputStream
,BufferedOutputStream
字符缓冲流:BufferedReader
,BufferedWriter
BufferedOutputStream字节缓冲输出流
使用步骤:
- 创建FileOutputStream对象,构造方法中绑定要输出的目的地;
- 创建BufferedOutputStream,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率;
- 使用BufferedOutputStream对象中的方法Writer,把数据写入到内存缓冲区中;
- 使用BufferedOutputStream对象中的方法Flush,把内部缓冲区的数据刷新到文件中;
- 释放资源(会先调用flush方法刷新数据)。
package com.zrz.IO.buffered;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedOutputStreamDemo {
public static void main(String[] args) throws IOException {
//1. 创建FileOutputStream对象,构造方法中绑定要输出的目的地;
FileOutputStream fos = new FileOutputStream("IOAndProperties\\a.txt");
//2. 创建BufferedOutputStream,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率;
BufferedOutputStream bos = new BufferedOutputStream(fos);
//3. 使用BufferedOutputStream对象中的方法Writer,把数据写入到内存缓冲区中;
bos.write("我把数据写入到内部缓存区中".getBytes());//getBytes()字符串转字节数组
//4. 使用BufferedOutputStream对象中的方法Flush,把内部缓冲区的数据刷新到文件中;
bos.flush();
//5. 释放资源(会先调用flush方法刷新数据)。
bos.close();
fos.close();
}
}
BufferedInputStream字节缓冲输入流
使用步骤:
- 创建一个FileInputStream对象,构造方法中要绑定读取的数据源;
- 创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream的读取效率;
- 调用BufferedInputStream对象中的read方法,读取文件;
- 释放资源(清空内存,提高程序的效率)。
package com.zrz.IO.buffered;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamDemo {
public static void main(String[] args) throws IOException {
//1. 创建一个FileInputStream对象,构造方法中要绑定读取的数据源;
FileInputStream fis = new FileInputStream("IOAndProperties\\a.txt");
//2. 创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream的读取效率;
BufferedInputStream bis = new BufferedInputStream(fis);
//3. 调用BufferedInputStream对象中的read方法,读取文件;
int len = 0;
byte[] bytes = new byte[2048];
while((len = fis.read(bytes)) != -1){
//System.out.println(len);
System.out.println(new String(bytes,0,len));
}
//4. 释放资源(清空内存,提高程序的效率)。
fis.close();
}
}
BufferedWriter字符缓冲输入流
- 特有的成员方法:
-
void newLine() 写入一个行分隔符(会根据不同的操作系统获取到不同的行分隔符)。
使用步骤:
- 创建BufferedWriter对象,构造方法中绑定要写入数据的目的地;
- 使用BufferedWriter对象中的writer把数据写入到内存缓冲区中(字符转换成字节的过程);
- 使用BufferedWriter对象中的flush方法,把内存缓冲区的文件刷新到文件中;
- 释放资源(会先把内存缓冲区的文件刷新到文件中)。
package com.zrz.IO.buffered;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterDemo {
public static void main(String[] args) throws IOException {
//1. 创建BufferedWriter对象,构造方法中绑定要写入数据的目的地;
BufferedWriter bw = new BufferedWriter(new FileWriter("IOAndProperties\\d.txt"));
//2. 使用BufferedWriter对象中的writer把数据写入到内存缓冲区中(字符转换成字节的过程);
for (int i=0;i<10;i++){
bw.write("张睿哲是个大帅哥!");
//bw.write("\r\n");
bw.newLine();
}
//3. 使用BufferedWriter对象中的flush方法,把内存缓冲区的文件刷新到文件中;
bw.flush();
//4. 释放资源(会先把内存缓冲区的文件刷新到文件中)。
bw.close();
}
}
BufferedReader字符缓冲输入流
- 特有的成员方法
String readLine() 读取一行文本或数据(行的终止符号:\r或\n或回车后面跟着\r\n),返回值:包含该行内容的字符串,不包含终止符,如果已到达流末尾,则返回null。
使用步骤
- 创建BufferedReader对象,构造方法中绑定要读取的数据源;
- 使用BufferedReader对象中的read或readLine方法读取文件;
- 释放资源。
package com.zrz.IO.buffered;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
//创建BufferedReader对象,构造方法中绑定要读取的数据源;
BufferedReader br = new BufferedReader(new FileReader("IOAndProperties\\d.txt"));
//使用BufferedReader对象中的read或readLine方法读取文件;
String line;
while ((line = br.readLine()) != null){
System.out.println(line);
}
//释放资源。
br.close();
}
}