字节缓冲流
字节缓冲输出流
java.io.BufferedOutputStream extends OutputStream
构造方法:BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,将数据写入指定的底层输出流
BufferedOutputStream(OutputStream out, int size):
参数:
OutputStream out:字节输出流
可传递FileOutputStream,缓冲流给FileOutputStream增加一个缓冲区,提高其写入效率
int size:指定缓冲流内部缓冲区大小
使用步骤(!!!)创建FileOutputStream对象,构造方法中绑定输出目的地
创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率
使用BufferedOutputStream对象中write方法,将数据写入到内部缓冲区
使用BufferedOutputStream对象中flush方法,把内部缓冲区的数据,刷新到文件中
释放资源(先调用flush,再close)public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("E:\\A JI\\program\\java\\g.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("把数据写入缓冲区".getBytes());
bos.flush();
bos.close();
}
字节缓冲输入流
java.io.BufferedIntputStream extends InputStream
构造方法:BufferedInputStream(InputStream in):创建一个新的缓冲输入流,将数据写入指定的底层输出流
BufferedInputStream(InputStream in, int size):
参数:
InputStream in:字节输出流
可传递FileInputStream,缓冲流给FileInputStream增加一个缓冲区,提高其读取效率
int size:指定缓冲流内部缓冲区大小
使用步骤(!!!)创建FileInputStream对象,构造方法中绑定要读取的数据源
创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象读取效率
使用BufferedInputStream对象中read方法,读取文件
释放资源public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("E:\\A JI\\program\\java\\g.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] bytes = new byte[1024];
int len = 0;
while((len = bis.read(bytes)) != -1) {
System.out.println(new String(bytes, 0, len));
}
bis.close();
}
字符缓冲流
字符缓冲输出流
java.io.BufferedWriter extends Writer
构造方法:BufferedWriter(Writer out):创建一个新的缓冲字符输出流
BufferedWriter(Writer out, int size):
参数:
Writer out:字符输出流
可传递FileWriter,缓冲流给FileWriter增加一个缓冲区,提高其写入效率
int size:指定缓冲流内部缓冲区大小
特有成员方法:
void newLine():写入一个行分隔符,会自动根据不同的操作系统,获取不同的航分隔符
使用步骤(!!!)创建字符缓冲输出流对象,构造方法中传递字符输出流
使用BufferedWriter对象中write方法,将数据写入到内部缓冲区
使用BufferedWriter对象中flush方法,把内部缓冲区的数据,刷新到文件中
释放资源public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\A JI\\program\\java\\g.txt"));
for (int i = 0; i < 10; i++) {
bw.write("123");
bw.newLine();
}
bw.flush();
bw.close();
}
字符缓冲输入流
java.io.BufferedReader extends Reader
构造方法:BufferedReader(Reader in):创建一个新的缓冲字符输入流
BufferedReader(Reader in, int size):
参数:
Reader in:字节输出流
可传递FileReader,缓冲流给FileReader增加一个缓冲区,提高其读取效率
int size:指定缓冲流内部缓冲区大小
特有的成员方法:
String readLine():读取数据的 行 终止符号返回值:
包括该行内容的字符串,不包含任何**行终止符**,若到达流末尾,**则返回null**(while条件此处有变化)
使用步骤(!!!)创建FileReader对象,构造方法中绑定要读取的数据源
创建BufferedReader对象,构造方法中传递FileReader对象,提高FileReader对象读取效率
使用BufferedReader对象中read/readLine方法,读取文件
释放资源public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("E:\\A JI\\program\\java\\g.txt"));
String line;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}
案例
文本排序!!!!
public static void main(String[] args) throws IOException {
HashMap map = new HashMap<>();
BufferedReader br = new BufferedReader(new FileReader("E:\\A JI\\program\\java\\g.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\A JI\\program\\java\\out.txt"));
//使用readLine,逐行读取文本
String line;
while((line = br.readLine()) != null) {
//对文本进行切割,可以根据 . 来切割
// . 是一个转义字符,需要两个\表示一个普通的 .
String[] arr = line.split("\\.");
//将切割好的序号和文本内容存储到HashMap中,key序号有序,会自动排序
map.put(arr[0], arr[1]);
}
//遍历HashMap,获取每一个键值对
for (String key : map.keySet()) {
String value = map.get(key);
//把每一个键值对,拼接成一个文本行
line = key + "." + value;
//将拼接好的文本,写入文件
bw.write(line);
bw.newLine(); //写一个换行
}
bw.flush();
bw.close();
}