java-io初步:Reader、Writer、Buf…

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

java四个基本的io基类:

字节流:InputStream、OutputStream

字符流:Reader、Writer.——作为硬盘的文件使用的两个子类:FileWriter、FileReader.

 

1、java早期只有字节流,后边由于处理不同字符的编码需求,出现了字符流.

2、java io体系中子类的命名通常都是以父类的名称作为后缀.

 

 

import java.io.*;
class IODemo
{
 public static void main(String[] args) // throwsException
 {
  //fileWrite();
  //fileRead();
  //bufferdWrite();
  //bufferdRead();

  //通过缓冲区拷贝一个.java文件
  copyJavaFile();
 }

 public static void fileWrite()
 {
  FileWriter fw =null;  //fw.close()调用需要引用fw.
  try
  {
   fw = newFileWriter("iodemo.txt", false); //第二个参数决定是否向覆盖原文件.
   fw.write("sddddddd");   
   fw.write("\r\naaa"); //windows\r\n为一个回车符.  
  }
  catch (Exception e)
  {
   System.out.println(e.toString());
  }
  finally
  {
   try
   {
    fw.close();
   }
   catch(Exception e)
   {
    System.out.println(e.toString());
   }
  }
 }

 public static void fileRead()
 {
  //读取文件通用格式:
  //建立字符流读取对象,于指定文件关联
  FileReader fr = null;
  try
  {
   fr = newFileReader("iodemo.txt");
   char[] arr =new char[1024];  //将读出的数据存入到数组中.(缓存)
   int num =0;
   while ((num =fr.read(arr)) != -1) //没有读到数据后,返回-1,循环结束;read方法可以自动向后读取剩下的数据,
   {
    System.out.println(newString(arr, 0, num));
   }
  }


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

 public static void bufferdWrite()
 {
  //创建流对象  
  FileWriter fw = null;
  //创建缓冲区跟流对象关联。
  BufferedWriter bfdw =null;
  try
  {
   fw = newFileWriter("iodemo.txt");
   bfdw = newBufferedWriter(fw);
   int i =0;
   while (i< 5)
   {
    bfdw.write("aaa"+ i);
    bfdw.newLine(); 
    bfdw.flush();
    i++;
   }

   bfdw.write("xxx");//不调用flush或close,这一行数据不能写入.
   bfdw.newLine();
  }
  catch (Exception e)
  {
   System.out.println(e.toString());
  }
  finally
  {
   try
   {
    bfdw.close(); //缓冲区的关闭是调用传入流的关闭方法.
   }
   catch(Exception e)
   {
    System.out.println(e.toString());
   }
  }
 }

 public static void bufferdRead()
 {
  //创建流对象
  FileReader fr = null;
  //创建缓冲区跟流对象关联。
  BufferedReader bfdr =null;
  try
  {
   fr = newFileReader("iodemo.txt");    
   bfdr = newBufferedReader(fr);
   Strings;
   while ( (s =bfdr.readLine()) != null)
   {
    System.out.println(s);
   }
  }
  catch (Exception e)
  {
   System.out.println(e.toString());
  }
  finally
  {
   try
   {
    bfdr.close(); //缓冲区的关闭是调用传入流的关闭方法.
   }
   catch(Exception e)
   {
    System.out.println(e.toString());
   }
  }
 }

 public static void copyJavaFile()
 {
  //创建流对象
  FileReader fr = null;
  FileWriter fw = null;
  //创建缓冲区跟流对象关联。
  BufferedReader bfdr =null;
  BufferedWriter bfdw =null;
  try
  {
   fr = newFileReader("iodemo.java");
   fw = newFileWriter("iodemo复件.txt");
   bfdr = newBufferedReader(fr);
   bfdw = newBufferedWriter(fw);
   Stringline;
   while ( (line= bfdr.readLine()) != null) //readLine没有读取回车符,只读取了回车符前的数据,因此写入文本时需要执行newLine方法.
   {
    bfdw.write(line);
    bfdw.newLine();
    bfdw.flush();
    //System.out.println(line);
   }
  }
  catch (IOException e)
  {
   System.out.println(e.toString());
  }
  finally
  {
   //对两个缓冲区分别进行关闭
   if (bfdw !=null)
   {
    try
    {
     bfdw.close();    
    }
    catch(Exception e)
    {
     System.out.println(e.toString());
    }
   }
   
   if (bfdr !=null)
   {
    try
    {
     bfdr.close();    
    }
    catch(Exception e)
    {
     System.out.println(e.toString());
    }
   }
  }
 }
}

原创粉丝点击