JavaIO输入输出流的总结

IO流按流向可分两类:

输入流:InputStream /Reader。好比是一根水管,里面有挤满了的字节或者字符单位。隐士指针记录从哪个水滴开始读取。  读

输出流:OutpStream/Writer。 也是一个水管,只是里面没有任何水滴,当向水管里加水的时候,才开始注入水滴。写

提高性能:1.加缓冲  2处理流

InputStream /Reader:本身是抽象类,不能创建实例有方法 read() read(byte [] b) read(byte [] b,int off,int len)



FileInputStream FileReader 节点流。跟文件联系在一起。

字节可以处理任何数据类型,字符要比字节能处理的类型要少。
通常在处理文本时优先使用字符流,其他的用字节流
在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。
只是读写文件,和文件内容无关的,一般选择字节流。

 java只提供了将字节流转换为字符流的方法

把经常读取文本的输入流写成BufferedReader

1.读取用户屏幕的输入

public class FileInputStreamTest  {
    public static void main(String[] args) throws IOExceptio

        try (   //将输入流InpustStream  转化为Reader对象 转成字符输入流
                InputStreamReader reader = new InputStreamRe
                               //将普通的reader包装成BufferReader的U
            BufferedReader br = new BufferedReader(reader);

                ){
            String line = null;
            while ((line=br.readLine())!=null){
                if(line.equals("exit")){
                    System.exit(1);
                }
                                 System.out.print("输出内容:"+line);
            }

        }   catch (IOException i)
        {
            i.printStackTrace();
        }
           }            
                        
              }         

2:向硬盘里写数据

      try (FileWriter fw = new FileWriter("d:\\poem.txt")) {
          fw.write("锦瑟-李商隐\r\n");
          fw.write("庄生晓梦");
      } catch (IOException e) {
          e.printStackTrace();
      }

  }

3.读取文件数据

public class HelloJava {
   public static void main(String[] args){
       try {
           FileWriter fileWriter = new FileWriter("test.txt");
           //写入数据到内存里
           fileWriter.write("adadada");
           //刷新流
           fileWriter.flush();
           fileWriter.close();//关闭流


       }catch (IOException e)
       {
           e.printStackTrace();
       }
    }
}


    try {


        FileReader fr = new FileReader("d:\\poem.txt");
        char[] buf = new char[20];
        int num = fr.read(buf);
        System.out.println("num" + num + new String(buf));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值