A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-王康 中级黑马   /  2012-10-10 09:54  /  1243 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


1、IO流最常见的8个对象
FileReader ; FileWriter ; FileInputStream ; FileOutPutStream ;
BufferedReader ; BufferedWriter ; BufferedInpuSteam; BufferedOutPutStream;

2、 键盘录入
//键盘本身就是一个标准的输入设备;对于Java而言这种输入设备都有相应的对象
        InputStream in=System.in;
int ch=in.read(); //阻塞式方法
System.out.println(ch);

3、事例
//获取用户键盘录入的数据,并将数据变成大写显示在控制台上
//如果用户输入的是over,结束键盘录入
/**
* 思路:
* 1.因为键盘录入只需要一个字节,要判断是否是over,需要将读取到的字节拼成字符串,需要一个容器StringBuilder。
*
* 2.在用户回车之前需要将录入的数据变成字符串进行判断即可。
*/
  //1、创建键盘录入容器
  StringBuilder sb=new StringBuilder();
  //2、获取键盘输入流对象
  InputStream in=System.in;
  //3、定义变量记录读取到的自己,并循环获取
  int ch=0;
  while((ch=in.read())!=-1){  //说白了就是让输入流一只处于阻塞状态,直到满足"over"条件,直接break。
   if(ch=='\r')
    continue;
   if(ch=='\n'){  //判断是否是换行符,若是的话就进行判断"over",并清空sb;若不是的话就添加append。
    String temp=sb.toString();
    if("over".equals(temp))
     break;
    System.out.print(temp.toUpperCase());
    sb.delete(0, sb.length());
   }
   else
    sb.append((char)ch);
  }

4、InputStreamReader 对象:
是字符流Reader子类对象,它的作用就是在字节和字符中间搭建桥梁,就是转换流。

5、转换流需求演示
// 1、需求:将键盘录入的数据写入到另一个文件中
  BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); //输入:从键盘获取输入。字符流,转换流,字节流。
  BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo.txt"))); //输出:到指定文件中。字符流,转换流,字节流。
  String line=null;
  while((line=bufr.readLine())!=null){
   if("over".equals(line)){
    break;
   }
   bufw.write(line.toUpperCase());
  }
  
  //2、需求:将一个文件内容显示在控制台上
  BufferedReader bufr=new BufferedReader(new InputStreamReader(new FileInputStream("demo.txt"))); //输入:从文件获取数据。字符流,转换流,字节流。
  BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out)); //输出:控制台输出。字符流,转换流,字节流。
  String line=null;
  while((line=bufr.readLine())!=null){
   if("over".equals(line)){
    break;
   }
   bufw.write(line.toUpperCase());
  }
  
  //3、需求:将一个文件中的内容复制到另一个文件中
  BufferedReader bufr=new BufferedReader(new InputStreamReader(new FileInputStream("demo.txt")));
  BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo2.txt")));
  String line=null;
  while((line=bufr.readLine())!=null){
   if("over".equals(line)){
    break;
   }
   bufw.write(line.toUpperCase());
  }











评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马