zoukankan      html  css  js  c++  java
  • scanner和BufferedReader

    .scanner
    .BufferReader: inputstream; outputstream
    .BufferWriter:
    BufferedReader-->InputStrean-->FileInputStream
    BufferWriter-->OutputStrean-->FileOutputStream

    Scanner sc = new Scanner (System.in); String str = sc.next();
    Scanner读取数据是按空格符,这其中包括空格键,Tab键,Enter键。只要遇到其中之一,Scanner的方法就会返回下一个输入

    BufferedReader stadin
    = new BufferedReader(new InputStreamReader(System.in)); String input = stadin.readLine();
    n=Integer.parseInt(input);
    readLine()是按Enter回车来读取一行数据的,只要在回车键之前的都会被readLine();方法返回
    要使用BufferReader输入一些字符之外的类型的数据,就要相对比较麻烦,需要通过 一些XXXX.parseXxx();
    来转换相应的数据类型,虽然,麻烦一些,但通过在一些OJ系统上的和Scanner作对 比,BufferReader的效率要
    比Scanner高一倍,这个差距可想而知,读取的数据越多,效果就越明显


    BufferedReader和BufferedWriter

    1. java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当 BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如 果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数 据满了,才会一次对目的地进行写出。

    2. 从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使 用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。

    3. System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。例如:

    Java代码  收藏代码
    1. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  

     下面的示例示范了BufferedReader和BufferedWriter的使用。可以在文字模式下输入字符,程序会将输入的文字存储至指定的文件中,如果要结束程序,输入quit字符串即可。

        package ysu.hxy;  
        import java.util.*;  
        import java.io.*;  
          
        public class BufferedReaderWriterDemo   
        {  
            public static void main(String[] args)   
            {  
                try  
                {  
                    //缓冲System.in输入流  
                    //System.in是位流,可以通过InputStreamReader将其转换为字符流  
                    BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));  
                    //缓冲FileWriter  
                    BufferedWriter bufWriter = new BufferedWriter(new FileWriter(args[0]));  
          
                    String input = null;  
          
                    //每读一行进行一次写入动作  
                    while(!(input = bufReader.readLine()).equals("quit"))  
                    {  
                        bufWriter.write(input);  
                        //newLine()方法写入与操作系统相依的换行字符,依执行环境当时的OS来决定该输出那种换行字符  
                        bufWriter.newLine();  
                    }  
                    bufReader.close();  
                    bufWriter.close();  
                }  
                catch(ArrayIndexOutOfBoundsException e)  
                {  
                    System.out.println("没有指定文件");  
                }  
                catch(IOException e)  
                {  
                    e.printStackTrace();  
                }  
            }  
        }  

     运行结果:

    D:hxy>java ysu.hxy.BufferedReaderWriterDemo test2.txt
    fsdafjads;fa
    fasdfas
    asdfdaf
    asd
    fdas
    fds
    fa
    df
    asdf
    dasff
    adsf
    a
    fasd
    quit

    会在目录下产生一个文件test2.txt,并在其中写入刚才输入的内容。

    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename")));
    不管你从磁盘读,从网络读,或者从键盘读,读到内存,就是InputStream

    写文件
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename")));

    in和out都是针对内存为中心说的,内存写到磁盘,是out;从磁盘读到内存,是in

    从屏幕数输入到内存,in;从console打印出来,是System.out

    同样socket编程用到更多的IO,这里分别用Server(服务器端)和Client(客户端)来说明

    Server: 遇到请求,网络----->内存 IN   服务器应答, 内存------->网络 OUT
    ----------------------------------------------------------------------------------------------
    Client: 请求服务,    内存----->网络 OUT 服务器应答, 网络------->内存 IN

    内存的数据出去了就是out 外设的东西到内存了就IN了

  • 相关阅读:
    5分钟搞定图片鉴黄web应用!
    Hibernate session FlushMode的五种设置
    一个不错的设计模式文章
    JVM调优
    PowerDesigner(CDM—PDM—SQL脚本的转换流程) 随笔
    JavaScript获取DOM元素位置和尺寸大小
    文件夹及文件操作
    oracle自定义类型 示例
    存储过程
    处理执行sql语句
  • 原文地址:https://www.cnblogs.com/fthjane/p/4782979.html
Copyright © 2011-2022 走看看