五、流操作规律

二、流操作规律

  1. 键盘读取,控制台打印。
    System.out: 对应的标准输出设备:控制台 //它是PrintStream对象,(PrintStream:打印流。OutputStream的子类)
    System.in: 对应的标准输入设备:键盘 //它是InputStream对象
    示例:

[java] view plain copy

  1. /从键盘录入流,打印到控制台上/

  2.  public static void InOutDemo(){  
    
  3.      //键盘的最常见的写法  
    
  4.      BufferedReader bufr = null;  
    
  5.      BufferedWriter bufw = null;  
    
  6.      try {  
    
  7.          /*InputStream ips = System.in;        //从键盘读入输入字节流 
    
  8.          InputStreamReader fr = new InputStreamReader(ips);             //将字节流转成字符流 
    
  9.         bufr = new BufferedReader(fr);  */                 //将字符流加强,提升效率  
    
  10.         bufr = new BufferedReader(new InputStreamReader(System.in));            //匿名类。InputSteamReader:读取字节并将其解码为字符  
    
  11.         bufw = new BufferedWriter(new OutputStreamWriter(System.out));      //OutputStreamWriter:要写入流中的字符编码成字节  
    
  12.         String line = null;  
    
  13.         while((line = bufr.readLine())!=null){  
    
  14.             if("over".equals(line)) break;  
    
  15.             bufw.write(line.toUpperCase());                     //打印  
    
  16.             bufw.newLine();                                     //为了兼容,使用newLine()写入换行符  
    
  17.             bufw.flush();                                       //必须要刷新。不然不会显示  
    
  18.         }  
    
  19.         if(bufw!=null) {  
    
  20.             bufr.close();  
    
  21.             bufw.close();  
    
  22.         }  
    
  23.     }  
    
  24.     catch (IOException e) {  
    
  25.         e.printStackTrace();  
    
  26.     }  
    
  27. }  
    
  28. }

  29. 整行录入
    1.从键盘录入数据,并存储到文件中。

  30. 我们在键盘录入的是时候,read()方法是一个一个录入的,能不能整行的录入呢?这时候我们想到了BufferedReader中ReadLine()方法。

  31. 转换流
    为了让字节流可以使用字符流中的方法,我们需要转换流。

  32. InputStreamReader:字节流转向字符流;
    a、获取键盘录入对象。
    InputStream in=System.in;
    b、将字节流对象转成字符流对象,使用转换流。
    InputStreamReaderisr=new InputStreamReader(in);
    c、为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader
    BufferedReaderbr=new BufferedReader(isr);
    //键盘录入最常见写法
    BufferedReaderin=new BufferedReader(new InputStreamReader(System.in));
    2.OutputStreamWriter:字符流通向字节流
    示例:

[java] view plain copy

  1. /==把键盘录入的数据存到一个文件中/

  2.  public static void inToFile() {  
    
  3.          //键盘的最常见的写法  
    
  4.      BufferedReader bufr = null;  
    
  5.      BufferedWriter bufw = null;  
    
  6.      try {  
    
  7.          /*InputStream ips = System.in;        //从键盘读入输入字节流 
    
  8.          InputStreamReader fr = new InputStreamReader(ips);             //将字节流转成字符流 
    
  9.         bufr = new BufferedReader(fr);  */                 //将字符流加强,提升效率  
    
  10.         bufr = new BufferedReader(new InputStreamReader(System.in));            //匿名类。InputSteamReader:读取字节并将其解码为字符  
    
  11.         bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt")));     //OutputStreamWriter:要写入流中的字符编码成字节  
    
  12.         String line = null;  
    
  13.         while((line = bufr.readLine())!=null){  
    
  14.             if("over".equals(line)) break;  
    
  15.             bufw.write(line.toUpperCase());                     //打印  
    
  16.             bufw.newLine();                                     //为了兼容,使用newLine()写入换行符  
    
  17.             bufw.flush();                                       //必须要刷新。不然不会显示  
    
  18.         }  
    
  19.         if(bufw!=null) {  
    
  20.             bufr.close();  
    
  21.             bufw.close();  
    
  22.         }  
    
  23.     }  
    
  24.     catch (IOException e) {  
    
  25.         e.printStackTrace();  
    
  26.     }  
    
  27. }  
    
  28. 流操作基本规律
    为了控制格式我将其写入了Java代码段中,如下:
    示例1:文本 ~ 文本

[java] view plain copy

  1. /*
  2. 流操作的基本规律。
  3. 一、两个明确:(明确体系)
    1. 明确源和目的
  4.  源:输入流  InputStream  Reader  
    
  5.  目的:输出流  OutputStream Writer  
    
    1. 操作的数据是否是纯文本
  6.  是: 字符流  
    
  7. 否: 字节流  
    
  8. 二、明确体系后要明确具体使用的对象
  9. 通过设备区分:内存,硬盘,键盘  
    
  10. 目的设备:内存,硬盘,控制台  
    
  11. 示例1:将一个文本文件中的数据存储到另一个文件中: 复制文件
  12. 一、明确体系  
    
  13.     源:文件-->读取流-->(InputStream和Reader)  
    
  14.     是否是文本:是-->Reader  
    
  15.     目的:文件-->写入流-->(OutputStream Writer)  
    
  16.     是否纯文本:是-->Writer  
    
  17. 二、 明确设备  
    
  18.     源:Reader  
    
  19.         设备:硬盘上一个文本文件 --> 子类对象为:FileReader  
    
  20.             FileReader fr = new FileReader("Goods.txt");  
    
  21.         是否提高效率:是-->加入Reader中的缓冲区:BufferedReader  
    
  22.             BufferedReader bufr = new BufferedReader(fr);  
    
  23.     目的:Writer  
    
  24.         设备:键盘上一个文本文件 --> 子类对象:FileWriter  
    
  25.             FileWriter fw = new FileWriter("goods1.txt");  
    
  26.         是否提高效率:是-->加入Writer的缓冲区:BufferedWriter  
    
  27.             BufferedWriter bufw = new BufferedWriter(fw);  
    
  28. 示例2:将一个图片文件数据复制到另一个文件中:复制文件
  29. 一、明确体系  
    
  30.     源:文件-->读取流-->(InputStream和Reader)  
    
  31.     是否是文本:否-->InputStream  
    
  32.     目的:文件-->写入流-->(OutputStream Writer)  
    
  33.     是否纯文本:否-->OutputStream  
    
  34. 二、 明确设备  
    
  35.     源:InputStream  
    
  36.         设备:硬盘上一个媒体文件 --> 子类对象为:FileInputStream  
    
  37.             FileInputStream fis = new FileInputStream("Goods.txt");  
    
  38.         是否提高效率:是-->加入InputStream中的缓冲区:BufferedInputStream  
    
  39.             BufferedInputStream bufi = new BufferedInputStream(fis);  
    
  40.     目的:OutputStream  
    
  41.         设备:键盘上一个媒体文件 --> 子类对象:FileOutputStream  
    
  42.             FileOutputStream fos = new FileOutputStream("goods1.txt");  
    
  43.         是否提高效率:是-->加入OutputStream的缓冲区:BufferedOutputStream  
    
  44.             BufferedOutputStream bufo = new BufferedOutputStream(fw);  
    
  45. 示例3:将键盘录入的数据保存到一个文本文件中
  46. 一、明确体系  
    
  47.     源:键盘-->读取流-->(InputStream和Reader)  
    
  48.     是否是文本:是-->Reader  
    
  49.     目的:文件-->写入流-->(OutputStream Writer)  
    
  50.     是否纯文本:是-->Writer  
    
  51. 二、 明确设备  
    
  52.     源:InputStream  
    
  53.         设备:键盘 --> 对用对象为:System.in --> InputStream  
    
  54.             为了操作方便,转成字符流Reader --> 使用Reader中的转换流:InputStreamReader  
    
  55.             InputStreamReader isr = new InputStreamReader(System.in);  
    
  56.         是否提高效率:是-->加入Reader中的缓冲区:BufferedReader  
    
  57.             BufferedReader bufr = new BufferedReader(isr);  
    
  58.     目的:Writer  
    
  59.         设备:键盘上一个文本文件 --> 子类对象:FileWriter  
    
  60.             FileWriter fw = new FileWriter("goods1.txt");  
    
  61.         是否提高效率:是-->加入Writer的缓冲区:BufferedWriter  
    
  62.             BufferedWriter bufw = new BufferedWriter(fw);  
    

5.指定编码表(转换流可以指定编码表)
要求:用UTF-8编码存储一个文本文件

[java] view plain copy

  1. import java.io.*;
  2. public class IOStreamLaw {
  3.  /** 
    
  4.   * @param args 
    
  5.   */  
    
  6.  public static void main(String[] args) throws IOException {  
    
  7.              //键盘的最常见写法  
    
  8.              BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));  
    
  9.             BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("goods1.txt"),"UTF-8"));  
    
  10.             String line = null;  
    
  11.             while((line=bufr.readLine())!=null){  
    
  12.                 if("over".equals(line)) break;  
    
  13.                 bufw.write(line.toUpperCase());  
    
  14.                 bufw.newLine();  
    
  15.                 bufw.flush();  
    
  16.             }  
    
  17.             bufr.close();  
    
  18. }  
    
  19. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值