InputStreamReader和BufferedReader

1.InputStream 、OutPutStream

InputStream 和 OutPutStream是处理字节流的抽象类
InputStream 是字节输入流的所有类的超类,一般使用它的子类,如FileInputStream等;
OutPutStream是字节输出流的所有类的超类

2.InputStreamReader、OutputStreamReader

InputStreamReader和OutputStreamReader是处理字符流的超类
InputStreamReader是字节流通向字符流的桥梁,它将字节转换为字符流。
OutputStreamReader是字符流向字节流的桥梁,它将字节转换为字节流。

3.BufferedReader、BufferWriter

(1) BufferedReader所属类库:
     java.lang.Object
          java.io.Reader
                java.io.BufferedReader
BufferedReader提供缓冲方式读取文本,readLine()读取一个文本行,从字符输入流中读取文本,缓冲各个文本,从而提供字符,数组和行的高效读取。
(2) BufferedWriter类由Writer类扩展而来,提供通用的缓冲方式写入文本,newLine()使用平台自己的行分隔符,将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
(3)通过 Bufferedreader 捕获从键盘所输入的语句

  public static void main(String[] args) throws IOException{
	      InputStreamReader input = new InputStreamReader(System.in);
	      BufferedReader read=new BufferedReader(input);
	      System.out.print(read.readLine());
	  }

(4)通过BufferedWriter向文件写入字符串,通过try-with-resources来声明和创建输入输出流,从而在使用后可以自动关闭。

import java.io.*;

public class project1 { 
	public static void main(String [] args) throws IOException{
		String path="D:\\相片\\新建文本文档.txt";
		File file=new File(path);	  
	    try(
	    	 OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(file),"UTF-8")	
	    	){
	    	 BufferedWriter bufferedWriter=new BufferedWriter(writer);
	    	 bufferedWriter.write("你是谁?从哪来?到哪去?");
	    	 bufferedWriter.flush();
	    }	   		
	}
 
}

    使用BufferedWriter 将内容写入文件,先开始少了wriite.flush()这句,发现无法写入内容。查资料后发现,原来BufferedWriter是缓冲输入流,意思是当你调用BufferedWriter的write方法时候。数据是先写入到缓冲区里,并没有直接写入到目的文件里。你必须调用BufferedWriter的flush()方法。这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里。

(5)通过BufferedReader 读取文件

import java.io.*;

public class project1 { 
	public static void main(String [] args) throws IOException{
		String path="D:\\相片\\新建文本文档.txt";
		File file=new File(path);
	    try(
		        InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF8");
		        BufferedReader bufferedReader = new BufferedReader(read);
    		){
		        String line = null;
		        while ((line = bufferedReader.readLine()) != null) {           
		                System.out.println(line);
	            }
	        }
		
	}

(6)读取和写入实例

package test;

import java.io.*;
import java.util.Scanner;

public class project1 { 	
    public static void main(String[] args) throws IOException{
    	int count=0;
    	String line;
    	File file=new File("D:\\相片\\新建文本文档.txt");
    	try(
    			OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(file));
    			BufferedWriter buffer=new BufferedWriter(writer);
    		){
    		buffer.write("好好学习\n");
    		buffer.write("天天向上\n");
    		buffer.write("报效祖国\n");
    		buffer.write("报效天下");
    		buffer.newLine();    //换行
    		buffer.write("精忠报国");
    		buffer.newLine();
    		buffer.write("天天向上");
    		buffer.flush();
    	}
    	
    	try(
    			InputStreamReader read=new InputStreamReader(new FileInputStream(file));
    			BufferedReader buffer=new BufferedReader(read);
    		){    	
    		while((line=buffer.readLine())!=null) {
    			count++;   	
    			
    			if(line.contains("报效"))
    				System.out.println(line+"   这行包含了\"报效\"");
    			else
    				System.out.println(line);
    		}
    		System.out.println("这个文件一共有"+count+"行");
    	}
    }
}
 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值