package chapter10.branch01;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestStandarInput {
 public static void main(String[] args) throws Exception {
  new TestStandarInput().input2();
 }
 
 /**
  * 
  * <b>方法名:</b>
  *     <p>input1<p>
  * <b>功能描述:</b>
  *     <p>
  *     以行的方式进行读取的,BufferedReader对字符进
  *     行了包装, 所以打印出来的跟输入进去的是一样的
  *     因为字节跟字符的转换,它的内部已经整理好了
  *     <p>
  * @throws Exception
  */
 public void input1() throws Exception {
  String s=null;
  InputStreamReader isr=new InputStreamReader(System.in);
  BufferedReader br=new BufferedReader(isr);
  s=br.readLine();
  while(s!="") {
   System.out.println("你输入的内容是:"+s);
   s=br.readLine();
  }
  //使用完了一定要关闭它否则就会浪费资源
  br.close();
 }
 
 /**
  * 
  * <b>方法名:</b>
  *     <p>input2<p>
  * <b>功能描述:</b>
  *     <p>
  *     以字节的方式去读取内容,打印出来的时候依然是
  *     按照字节的方式打印出来
  *     <p>
  * @throws Exception
  */
 public void input2() throws Exception {
  /**
   * 这个地方也完全可以定义为int类型,因为char类型
   * 到int类型之间的转换是隐式的转换,不过问题在于
   * 如果写成了int那么打印出来的肯定就只是数字了
   */
  char s;
  InputStreamReader isr=new InputStreamReader(System.in);
  s=(char) isr.read();
  while(s!=0) {
   System.out.println("你输入的内容是:"+s);
   s=(char) isr.read();
  }
  //使用完了一定要关闭它否则就会浪费资源
  isr.close();
 }
}

从控制台获取输入数据写入本地文件

File f=new File("E:\\testio\\dada.txt");
  f.createNewFile();
  InputStreamReader isr=new InputStreamReader(System.in);
  BufferedReader in=new BufferedReader(isr);
  PrintWriter out=new PrintWriter(new FileWriter(f));
  String s=in.readLine();
  while(!s.equals("")) {
   out.println(s);
   s=in.readLine();
  }
  //用完了之后一定要关闭掉那些reader之类的东西
  out.flush();
//  out.close();
//  in.close();

上面的写入使用的是printWriter,使用它的好处在于可以有缓冲,

因此可以加快读取的速度,如果它读取的数据不够多的话,那么它

是不会向文件里面写入的,直到它读取了它设置的默认的大小之后

在会自动的flush一下把当前里面的内容输出到文件,为了证明上面

的结论可以做一个实验.

 

第一步:把上面的flush和close全部注释掉,这样的话,如果数据少的话

,printWriter不会把当前的内容写入到文件中,在程序运行的时候输入

少量字符,比如123然后再连续回车,这样程序结束后到指定的目录下

去查看文件,会发现文件是空的,因为数据太少了,所以程序没来得及

输出就结束了

 

第二步:同样的操作,随便把flush或者是close打开,再去执行第一步

的操作,文件里面都是有记录的,因为close或者flush都会使程序把

当前的内容全部输出出去.