缓冲流对象
这里我们说一下常用的字符缓冲流对象,字节缓冲流对象不常用。
缓冲流对象写 | BUfferrdReader |
---|---|
缓冲流对象读 | Bufferred Writer |
缓冲流对象写
如果想要使用想使用缓冲流来进行写的操作就必须先使用字符流的写操作。下面我们来看一下如何使用代码来使用缓冲流对象进行写。
//创建字符流读取对象 - 需要文件路径
//不添加true,则覆盖原有内容。添加true,则在文件后添加
Writer writer = new FileWriter("F:/writer.txt");//这里可以看做是 File file = new File("F:/writer.txt"); Writer writer = new FileWriter(file)
//这里我们就要使用缓冲流对象进行写的操作,需要先生产写的缓冲流对象
BufferedWriter bw = new BufferedWriter(writer);//创建完就可以直接开始写了
bw.write("hahaha");//添加写的内容
bw.write("asdas");
bw.close();//关闭流
writer.close();//关闭流
//这里我们要注意当调用多个流进行操作时一定要倒着关闭流
}
缓冲流对象的读取
缓冲流对象的读跟缓冲流对象的写操作是一样的。
//创建字符流读取对象 - 需要文件路径
Reader reader = new FileReader("F:/writer.txt");
//创建字符流缓冲对象-需要一个字符流读对象
BufferedReader br = new BufferedReader(reader);
//定义一个字符串来接受读取到的内容
String result = null;
//这里遍历读取到的内容
while((result = br.readLine())!= null) {//readLine()按行读取
System.out.println(result);
}
br.close();//关闭流
reader.close();//关闭流
}
字符串缓冲池
StringBuilder | Stringbuffer |
---|
StringBuilder(线程不安全) StringBuffer(线程安全)
SringBulieder和Stringbuffer的区别:
两个缓冲池只在是否安全上有区别,其他都一样
这里我们来说一下之前出过的面试题;
面试题:String StringBuilDer SringBuffer的区别
String修饰的是常量,StringBuileDer和StringBuffer修饰的是变量
StringBuilDer是线程不安全,StringBuffer线程安全
StringBuilDer效率比StringBuffer高
*StringBuffer安全性比StringBuilDer高
使用缓冲池读取我们还要注意:
使用字符数组作为缓冲池进行读取时,会出现显示多余或不完整的情况
StringBuilder是可变的字符序列,变化规则是当值超出了容器的默认给的大小,容器会自动扩容,每次扩原有大小的一半。
public static void readMethod2() throws IOException {
Reader reader = new FileReader("F:/writer.txt");
//创建字符串缓池流对象
StringBuilder sb = new StringBuilder();
char [] cbuf = new char[3];//这里是字符缓冲池的一个问题这里就需要使用字符流缓冲对象
while (reader.read(cbuf)!=-1) {
sb.append(cbuf);
}
System.out.println(sb);
reader.close();
}
}
字符流缓冲对象
/**
* 字符流缓冲对象读取
* @throws IOException
*/
public static void bufferedReaderMethod() throws IOException {
//创建字符流读取对象 - 需要文件路径
Reader reader = new FileReader("F:/writer.txt");
//创建字符流缓冲对象-需要一个字符流读对象
BufferedReader br = new BufferedReader(reader);
String result = null;
//br.readLine();按行读取
while((result = br.readLine())!= null) {//br.readLine();需要返回一个字符串类型,我们创建一个空的字符串来接收读取到的数据
System.out.println(result);
}
br.close();//关闭流
reader.close();
}
}
字符流缓冲对象写
/**
* 缓冲流写
* @throws IOException
*/
public static void bufferedWriterMethod() throws IOException {
//不添加true,则覆盖原有内容。添加true,则在文件后添加
Writer writer = new FileWriter("F:/bufferedWriter.txt",true);
BufferedWriter bw = new BufferedWriter(writer);
bw.write("hahaha");
bw.write("asdas");
bw.close();
writer.close();
}