JAVAIO流经验总结

JAVAIO流经验总结:

 

什么是流呢?我想流应该就是管道吧,文件流应该就和水流差不多吧,程序员不但要具备一定的逻辑思维能力还应该具备一定的形象思维能力,否则这一章很不好掌握的,所以在每一次读文件的时候就想着有一根管道插在了文件上准备向外抽水,这样就不难理解这一章的内容了,这一章节的内容远不止这些,还有其他的流,什么缓冲流、节点流、处理流,性质都一样的,所以这章你就想着几根管道插来查去的就行了,最多外层包一层处理流呗,万变不离其中,

 

流:

1.良好的编程习惯:在调用close()方法前,先调用flush()方法.

2. 字节流stream 字符流(read write);

   节点流(直接对在上面) 处理流(套在节点流外面);

   输入流(in or read) 输出流(out or write)

 

FileInputStream:

 

package IO;

import java.io.*;

public class TestFileInputStream {

    public static void main(String[] args){

       int b=0;

       FileInputStream in=null;

in=new FileInputStream("c:/servletTrain.java");

       }catch(FileNotFoundException e){

           System.out.println("文件未找到");

           System.exit(-1);

       }

       try{

           long num=0;

           while((b=in.read())!=-1){

              System.out.print((char)b);

              num++;

           }

           in.close();

           System.out.println();

           System.out.println("共读取了"+num+"个字符");

       }catch(IOException e1){

           System.out.println("文件读取错误");

           System.exit(-1);

       }

    }

}

      

FileOutputStream:

 

 

package IO;

import java.io.*;

public class TestFileOutputStream {

    public static void main(String[] args){

       int b=0;

       FileInputStream in=null;

       FileOutputStream out=null;

       try{

           in=new FileInputStream("c:/servletTrain.java");

           out=new FileOutputStream("c:/st.java");

           while((b=in.read())!=-1){

              out.write(b);

           }

           in.close();

           out.close();        

       }catch(FileNotFoundException e1){

           System.out.println(e1.getMessage());

       }catch(IOException e2){

System.out.println(e2.getMessage());

       }

    }

}

 

 

FileReader:

 

 

package IO;

import java.io.*;

public class TestFileReader {

    public static void main(String[] args){

       FileReader fr=null;

       int c=0;

       try{

           fr=new FileReader("c:/servletTrain.java");

           while((c=fr.read())!=-1){

              System.out.print((char)c);

           }

           fr.close();

       }catch(FileNotFoundException e){

           System.out.println(e.getMessage());

       }catch(IOException e1){

           System.out.println(e1.getMessage());

       }

    }

}

 

FileWriter:

 

 

package IO;

import java.io.*;

public class TestFileWriter {

    public static void main(String[] args){

       FileWriter fw=null;

       try{

           fw=new FileWriter("c:/unicode.dat");

           for(int c=0;c<50000;c++){

              fw.write(c);

           }

           fw.close();

           System.out.println("文件写入成功");

       }catch(IOException e1){

           System.out.println(e1.getMessage());

       }

    }

}

 

BufferedInputStream:

 

 

package IO;

import java.io.*;

public class TestBufferStream1 {

    public static void main(String[] args){

       try{

           FileInputStream fis=new FileInputStream("c:/st.java");

           BufferedInputStream bis=new BufferedInputStream(fis);

           int c=0;

           System.out.println(bis.read());

           System.out.println(bis.read());

           bis.mark(100);

           for(int i=0;i<=10&&(c=bis.read())!=-1;i++){

              System.out.println((char)c+"");

           }

           System.out.println();

           bis.reset();

           for(int i=0;i<=10&&(c=bis.read())!=-1;i++){

              System.out.println((char)c+"");

           }

           System.out.println();

           bis.reset();

           for(int i=0;i<=10&&(c=bis.read())!=-1;i++){

              System.out.println((char)c+"");

           }

           System.out.println();

           bis.close();

       }catch(IOException e){

           System.out.println(e.getMessage());

       }

    }

}

 

BufferedReader/BufferedWriter:

 

package IO;

import java.io.*;

public class TestBufferStream2 {

    public static void main(String[] args){

       try{

           FileWriter fw=new FileWriter("c:/dat2.txt");

           BufferedWriter bw=new BufferedWriter(fw);

           FileReader fr=new FileReader("c:/dat2.txt");

           BufferedReader br=new BufferedReader(fr);

           String s=null;

           for(int i=1;i<=100;i++){

           s=String.valueOf(Math.random());

           bw.write(s);

           bw.newLine();

           }

           bw.flush();

           fw.close();

           bw.close();

           while((s=br.readLine())!=null){//BufferedReader可以读一行

           System.out.println(s);

           }

           fr.close();

           br.close();

       }catch(IOException e){

           System.out.println(e.getMessage());

       }

    }

}

 

 

转换流:

 

 

package IO;

import java.io.*;

public class TestTransForm1 {

    public static void main(String[] args){

       try{

           OutputStreamWriter osw=new OutputStreamWriter(

                  new FileOutputStream("c:/char.txt"));

           osw.write("mircosoftbmsunapplehp");

           System.out.println(osw.getEncoding());

       osw.close();

           osw=new OutputStreamWriter(

                  new FileOutputStream("c:/char.txt",true),//true是追加的意思

                  "ISO8859_1");

           osw.write("mircosoftbmsunapplehp");

           System.out.println(osw.getEncoding());

           osw.close();

       }catch(IOException e){

           System.out.println(e.getMessage());

       }

    }

}

 

package IO;

import java.io.*;

public class TestTransForm2 {

    public static void main(String[] args){

       InputStreamReader isr=new InputStreamReader(System.in);//System.in 阻塞式的

       BufferedReader br=new BufferedReader(isr);

       String s=null;

       try{

           s=br.readLine();

           while(s!=null){

              if(s.equalsIgnoreCase("exit"))break;

              System.out.println(s.toUpperCase());

              s=br.readLine();

           }

       }catch(IOException e){

           System.out.println(e.getMessage());

       }

    }

}

 

DataInputStream/DataInputStream:

 

 

package IO;

import java.io.*;

public class TestDataStream {

    public static void main(String[] args){

       ByteArrayOutputStream baos=new ByteArrayOutputStream();

       DataOutputStream dos=new DataOutputStream(baos);

       try{

           dos.writeDouble(Math.random());

           dos.writeBoolean(true);

           ByteArrayInputStream bais=new ByteArrayInputStream(

                  baos.toByteArray());//拿到baos.toByteArray()这个字节数组的引用

           System.out.println(bais.available());

           DataInputStream dis=new DataInputStream(bais);

           System.out.println(dis.readDouble());

           System.out.println(dis.readBoolean());

           dos.close();

           dis.close();

       }catch(IOException e){

           System.out.println(e.getMessage());

       }

    }

}

 

PrintStream:

 

 

package IO;

import java.io.*;

public class TestPrintStream {

    public static void main(String[] args){

       PrintStream ps=null;

       try{

           FileOutputStream fos=new FileOutputStream("c:/log.dat");

           ps=new PrintStream(fos);

       }catch(IOException e){

           System.out.println(e.getMessage());

       }

       if(ps!=null){

           System.setOut(ps);//重新设置System.out的流对象

       }

       int ln=0;

       for(char c=0;c<=60000;c++){

           System.out.print(c+" ");

           if(ln++>=100){

              System.out.println();

              ln=0;

          }

       }

    }

}

 

package IO;

import java.io.*;

public class TestPrintStream2 {

    public static void main(String[] args){

       String filename=args[0];

       if(filename!=null){

           list(filename,System.out);

       }

    }

    public static void list(String f,PrintStream fs){

       try{

           BufferedReader br=new BufferedReader(new FileReader(f));

           String s=null;

           while((s=br.readLine())!=null){

              fs.println(s);

           }

           br.close();

       }catch(IOException e){

           fs.print("无法读取文件");

       }

    }

}

 

package IO;

import java.io.*;

import java.util.*;

public class TestPrintStream3 {

         public static void main(String[] args){

                   String s=null;

                   BufferedReader br=new BufferedReader(

                                     new InputStreamReader(System.in));

                   try{

                            FileWriter fw=new FileWriter("c:/logfile.log",true);

                            PrintWriter log=new PrintWriter(fw);

                            while((s=br.readLine())!=null){

                                     if(s.equalsIgnoreCase("exit")) break;

                                     System.out.println(s.toUpperCase());

                                     log.println("------");

                                     log.println(s.toUpperCase());

                                     log.flush();

                            }

                            log.println("==="+new Date()+"===");

                            log.flush();

                            log.close();

                   }catch(IOException e){

                            System.out.println(e.getMessage());

                   }

         }

}

 

ObjectInputStream/ObjectInputStream:

 

package IO;

import java.io.*;

public class TestObjectIO {

    public static void main(String[] args)throws Exception{

       T t=new T();

       t.k=8;

       FileOutputStream fos=new FileOutputStream("c:/testobjiectio.dat");

       ObjectOutputStream oos=new ObjectOutputStream(fos);

       oos.writeObject(t);

       oos.flush();

       oos.close();

      

       FileInputStream fis=new FileInputStream("c:/testobjiectio.dat");

       ObjectInputStream ois=new ObjectInputStream(fis);

       T tReaded=(T)ois.readObject();

       System.out.println(tReaded.i+" "+tReaded.j+" "+tReaded.d+" "+tReaded.k);

    }

}

class T implements Serializable{

//实现这个接口Serializable,系统为你序列化;想自己序列化,就实现Externalizable

    int i=0;

    int j=9;

    double d=2.3;

    //int k=0;

    transient int k=0;//transient 透明的,被其修饰的变量在序列化时不被考虑

}

posted on 2012-09-27 22:17  priout  阅读(434)  评论(0编辑  收藏  举报