带有缓冲区的字符流,使用这个流的时候不需要自定义char数组或者byte数组,自带缓冲,并且可以一行一行读写。,但是在读取数据的时候是不会读取换行符的。
我们用到的缓冲流有BufferdeReader,BufferedWriter,BufferedInputStream,BufferedOutputStream。
下面我们来演示使用BufferdeReader来按照每一行来读取文件:
public class ReadLine{
public static void main(String[] args) {
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader("D:aaa.txt");
br = new BufferedReader(fr);
String str;
while ((str = br.readLine()) != null){
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
对于包装流来说的话,只需要关闭最外层的流即可。
如果使用的是字节流来一行一行来读取的话,我们需要使用转换流来将字节流转成字符流。转换流的作用就是将字节流转化成字符流,InputStreamReader,OutputStreamriter
public class ReadLine{
public static void main(String[] args) {
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
fis = new FileInputStream("D:aaa.txt");
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
String str;
while ((str = br.readLine()) != null){
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
我在这里之所以讲解这个,主要就是我们在平时的笔试中都是会遇到按照一行一行来进行输入的,下面就来列举两种我们在笔试的时候遇到的输入输出的问题。
这一种方式是一个数据一个数据来进行读取的,我们的第一行一般都是说的下面会输入几个数据。什么类型的数据就使用scanner.nextxxx()来获取
public class IOTest{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String str = scanner.next();
int aa = scanner.nextInt();
double bb = scanner.nextDouble();
boolean cc = scanner.nextBoolean();
System.out.println(str);
System.out.println(aa);
System.out.println(bb);
System.out.println(cc);
}
}
}
第二种方式就是一行一行来进行读取的,就是和上面那个差不多,直接使用scanner.nextLine来进行读取。
public class IOTest{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String str = scanner.nextLine();
System.out.println(str);
}
}
}
以上是我关于IO流中缓冲流的认识,如有错误或者侵权的地方,请联系我改正或者删除。欢迎大家和我一起探讨关于java和算法的知识。



