黑马程序员技术交流社区

标题: 【IO流】 总结③ [打印本页]

作者: 黑马-王康    时间: 2012-10-10 09:54
标题: 【IO流】 总结③

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());
  }
















欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2