💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用(XML版完结篇)
💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇)
💖Spring中的依赖注入、setter与构造器注入、自动装配与集合注入详细描述及使用(XML版中篇)
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: KJ.JK
💖系列专栏:JavaEE进阶教程系列
* 缓冲流是对4个基本的 FileXxx 流的增强,所以也是4个流* 按照数据类型分类:字节缓冲流: BufferedInputStream , BufferedOutputStream字符缓冲流: BufferedReader , BufferedWriter/*缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率
*/
* "BufferedOutputStream" 继承 "OutputStream",操作时还是"使用OutputStream的write方法"* 构造方法: "BufferedOutputStream(OutputStream out)" 参数要一个"基本的流",最终靠"基本的流去操作文件" //需要 FileOutputStream 这个基本字节输出流
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class BufferOutputStream_Test {public static void main(String[] args) throws IOException {//创建字节缓冲流//方式1
// BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("s_day11\\abcday11\\1.txt"));//方式2FileOutputStream f=new FileOutputStream("s_day11\\abcday11\\1.txt");BufferedOutputStream bos=new BufferedOutputStream(f);//写单个字节bos.write(97);//写一个字节数组byte [] bys={'a','b','c'};bos.write(bys);//写一个字节数组,从指定地方开始写到指定地方结束bos.write(bys,0,1);bos.write("中国".getBytes());//缓冲流底层是缓冲区需要刷新或者关闭bos.close();}
}
* "BufferedInputStream" 继承"InputStream",操作还是使用"InputStream的read方法"* 构造方法:"BufferedInputStream(InputStream in)" 参数"要一个基本的流",靠"基本的流去操作文件"//需要 new FileInputStream 这个基本字节输入流
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class BufferedInputStream_Test {public static void main(String[] args) throws IOException {//创建字节缓冲流//方式1
// BufferedInputStream bis=new BufferedInputStream(new FileInputStream("s_day11\\abcday11\\1.txt"));//方式2FileInputStream f=new FileInputStream("s_day11\\abcday11\\1.txt");BufferedInputStream bis=new BufferedInputStream(f);//读数据byte [] bys=new byte[1024];int len = bis.read(bys);//转成字符串输出System.out.println(new String(bys,0,len));bis.close();}
}
* "BufferedWriter" 继承了"Writer",可以使用父类"Writer中的write方法"* 构造方法:"BufferedWriter(Writer out)" 参数"要传入基本流",靠"基本流来操作文件"* 特有方法:"newline() 换行" (相当于\r\n //通用性强,可以跨系统使用)// 需要 new FileWriter 基本字符输出流
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class BufferedWriter_Test {public static void main(String[] args) throws IOException {BufferedWriter bw=new BufferedWriter(new FileWriter("F:\\ideaJavaCode10after\\s_day11\\abcday11\\2.txt"));bw.write("it中国");//特有方法bw.newLine(); //newLine换行 相当于\r\n //通用性强,可以跨系统使用bw.write("中国it");bw.close();}
}
* "BufferedReader" 继承了"Reader",可以使用父类 "Reader中的read方法"* 构造方法:"BufferedReader(Reader in)" 参数"要传入基本流",靠"基本流来操作文件"* 特有方法:String readLine() : "一次读一行","读取不到数据返回null"// 需要 new FileReader 基本字符输入流
import java.io.*;public class BufferedReader_Test {public static void main(String[] args) throws IOException {BufferedReader br=new BufferedReader(new FileReader("F:\\ideaJavaCode10after\\s_day11\\abcday11\\2.txt"));String line;while ((line=br.readLine())!=null){System.out.println(line);}br.close();}
}
import java.util.Objects;public class User {public User(String line) {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public User(String name, int age) {this.name = name;this.age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;User user = (User) o;return age == user.age && Objects.equals(name, user.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}private String name;private int age;@Overridepublic String toString() {return name+","+age;}
}-----------------------------------------------------------------------------import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class Test {public static void main(String[] args) throws IOException {BufferedReader br=new BufferedReader(new FileReader("F:\\ideaJavaCode10after\\s_day11\\用户列表.txt"));ArrayList list=new ArrayList<>();String line;while ((line=br.readLine())!=null){
// System.out.println(line);String[] split = line.split("=");//因为每次都是都是奇数是名字,偶数是年龄,每次都是切一行就换行//所以每次都是从0,1开始String name=split[0];int age=Integer.parseInt(split[1]);User u=new User(name,age);list.add(u);}list.sort((o1, o2) -> o1.getAge()-o2.getAge());br.close();System.out.println(list);}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class Demo {/*四种方式复制:基本流读取一个字节 37764缓冲流读取一个字节 83基本流一次读一个数组 137缓冲流一次读一个数组 114*/public static void main(String[] args) throws Exception {long start=System.currentTimeMillis();// test1(); 37764// test2(); 83// test3(); 137// test4(); 114long end=System.currentTimeMillis();System.out.println(end-start);}public static void test1() throws Exception{ //基本流读取一个字节 37764FileInputStream fis=new FileInputStream("F:\\ideaJavaCode10after\\s_day11\\演示.ppt");FileOutputStream fos=new FileOutputStream("F:\\ideaJavaCode10after\\s_day11\\test1copy.ppt");int b;while ((b=fis.read())!=-1){fos.write(b);}fos.close();fis.close();}public static void test2() throws Exception{ //缓冲流读取一个字节 83BufferedInputStream bis= new BufferedInputStream(new FileInputStream("F:\\ideaJavaCode10after\\s_day11\\演示.ppt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("F:\\ideaJavaCode10after\\s_day11\\test2copy.ppt"));int b;while ((b=bis.read())!=-1){bos.write(b);}//只需要关闭缓冲流,缓冲流底层会自动关闭基本流bis.close();bos.close();}public static void test3() throws Exception{ //基本流一次读一个数组 137FileInputStream fis=new FileInputStream("F:\\ideaJavaCode10after\\s_day11\\演示.ppt");FileOutputStream fos=new FileOutputStream("F:\\ideaJavaCode10after\\s_day11\\test3copy.ppt");byte [] bys=new byte[1024];int len;while ((len=fis.read(bys))!=-1){fos.write(bys,0,len);}fos.close();fis.close();}public static void test4() throws Exception{ //缓冲流一次读一个数组 114BufferedInputStream bis=new BufferedInputStream(new FileInputStream("F:\\ideaJavaCode10after\\s_day11\\演示.ppt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("F:\\ideaJavaCode10after\\s_day11\\test4copy.ppt"));byte [] bys=new byte[1024];int len;while ((len=bis.read(bys))!=-1){bos.write(bys,0,len);}bos.close();bis.close();}
}
1.在读写的时候,要使用一次读取一个字节数组的方式去读取2.缓冲流读写效率都是比较高的,通常使用缓冲流去读写数据,以提高效率3.缓冲流底层使用了缓冲数组,默认是8*1024大小,是先把数据全部放进去,装满了再一次性放进去,所以效率高
* 字符缓冲流为什么提高了操作数据的性能?* 字符缓冲流"自带8K缓冲区" (8*1024)* 可以提高原始字符流读写数据的性能* 说出字符缓冲流的新增功能* public BufferedReader(Reader r)"多了readLine()按照行读取的功能"* public BufferedWriter(Writer w)"多了newLine()换行的功能"
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习
上一篇:vue3——使用axios
下一篇:通关 MySQL获奖名单已公布