java-流转换

来源:互联网 发布:mac 迅雷怎么断点下载 编辑:程序博客网 时间:2024/04/30 17:57

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

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

 public static void copyJPG()
 {
  FileInputStream fis=  null;
  FileOutputStream fos =null;
  try
  {
   fis = newFileInputStream("Desert.jpg");
   fos = newFileOutputStream("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() throwsIOException
 {
  System.out.println('a'==97);
  StringBuilder sb = newStringBuilder();

  int ch = 0;
  while (true)
  {
   InputStreamin = System.in;
   ch =in.read();
   if (ch =='\r')
    continue;
   if (ch =='\n')
   {
    Strings = 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 = newInputStreamReader(in);  //转换流,将字节流转换为字符流
  //BufferedReader bufr = newBufferedReader(isr);
  BufferedReader bufr = newBufferedReader(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 = newBufferedWriter(new OutputStreamWriter(System.out));
   //bufr = newBufferedReader(new InputStreamReader(newFileInputStream("StreamDemo.java")));

   //复制文件
   bufw = newBufferedWriter(new OutputStreamWriter(newFileOutputStream("a.txt")));
   bufr = newBufferedReader(new InputStreamReader(newFileInputStream("StreamDemo.java")));

   //将输入的文本存储到文本文件中.
   //bufw = newBufferedWriter(new OutputStreamWriter(newFileOutputStream("test.txt")));
   //bufr = newBufferedReader(newInputStreamReader(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());
   }
  }
  
 }
}

原创粉丝点击