java-流转换

流操作:
1、明确数据源和数据目的(到底是输入还是输出流)
2、明确操作的是否是纯文本数据(用字符流还是字节流)
字节流:
FileInputStream、BufferInputStream
FileOutputStream、BufferOutPutStream
字符流:
FileReader、BufferedReader
FileWriter、BufferedWriter
转换流:
InputStreamReader:字节通向字符的桥梁
OutputStreamWriter:字符通向字节的桥梁

import java.io.*;
class StreamDemo
{
 public static void main(String[] args) throws IOException
 {
  //copyJPG();  //复制图片
  //systemInGen(); 
  //systemInStream();
  systemOutStream();
 }

 public static void copyJPG()
 {
  FileInputStream fis =  null;
  FileOutputStream fos = null;
  try
  {
   fis = new FileInputStream("Desert.jpg");
   fos = new FileOutputStream("Desert复件.jpg");
   byte [] ch = new byte[1024];  //
   int num = 0;  //读取一段数据,定义数组长度为1k.
   while ((num = fis.read(ch)) != -1)
   {
    fos.write(ch,0,num);
   }
  }
  catch (IOException e)
  {
   e.printStackTrace();
  }
  finally
  {
   if (fis != null)
   {
    try
    {
     fis.close();
    }
    catch (Exception e)
    {
     e.printStackTrace();
    }
   }
   if (fos != null)
   {
    try
    {
     fos.close();
    }
    catch (Exception e)
    {
     e.printStackTrace();
    }
   }
  }
 }

 //键盘录入,用SringBuilder缓存.
 public static void systemInGen() throws IOException
 {
  System.out.println('a'==97);
  StringBuilder sb = new StringBuilder();

  int ch = 0;
  while (true)
  {
   InputStream in = System.in;
   ch = in.read();
   if (ch == '\r')
    continue;
   if (ch == '\n')
   {
    String s = sb.toString();
    if ("over".equals(s))
     return;
    System.out.println(s.toUpperCase());
    sb.delete(0, sb.length());   //清空缓存
   }
   else
    sb.append((char)ch);
  }
 }

 //键盘录入,用BufferedReader缓存
 public static void systemInStream()
 {
  //可以利用System.setIn和setOut方法,重新分配输入输出流.
  //InputStream in = System.in;
  //InputStreamReader isr = new InputStreamReader(in);  //转换流,将字节流转换为字符流
  //BufferedReader bufr = new BufferedReader(isr);
  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

  try
  {
   String line = null;  //读到的一行的数据
   while ((line = bufr.readLine()) != null)
   {
    if ("over".equals(line))
    {
     return;
    }
    System.out.println(line.toUpperCase());
     
  }
  catch (IOException e)
  {
   System.out.println(e.toString());
  }
  finally
  {
   try
      
    bufr.close();
   }
   catch (Exception e)
   {
    System.out.println(e.toString());
   }
  }
  
 }

 //1、通过键盘录入数据将数据打印到控制台  将PrintStrream(System.out)转换为BufferedWriter
 //2、复制一个文本文件
 //3、将键盘录入的数据存储到一个文件中.
 //————三个操作,方法不变,变化的是原始文件和目标文件(输入流、输出流).
 public static void systemOutStream()
 {
  BufferedWriter bufw = null;
  BufferedReader bufr = null;
  try
  {
   //将文件输出到控制台打印出来
   //bufw = new BufferedWriter(new OutputStreamWriter(System.out));
   //bufr = new BufferedReader(new InputStreamReader(new FileInputStream("StreamDemo.java")));

   //复制文件
   bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt")));
   bufr = new BufferedReader(new InputStreamReader(new FileInputStream("StreamDemo.java")));

   //将输入的文本存储到文本文件中.
   //bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("test.txt")));
   //bufr = new BufferedReader(new InputStreamReader(System.in));  
   
   String line = null;  //读到的一行的数据
   while ((line = bufr.readLine()) != null)
   {
    if ("over".equals(line))
    {
     return;
    }

    //三个操作,方法不变.
    bufw.write(line);
    bufw.newLine();
    bufw.flush();
     
  }
  catch (IOException e)
  {
   System.out.println(e.toString());
  }
  finally
  {
   try
      
    bufr.close();
   }
   catch (Exception e)
   {
    System.out.println(e.toString());
   }

   try
      
    bufw.close();
   }
   catch (Exception e)
   {
    System.out.println(e.toString());
   }
  }
  
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值