IO输入输出流

                                       IO


1.认识InputStream、OutputStream、FileWriter、FileReader、BufferedInputStream、            BuferrOutputStream、BufferedWriter、BufferedReader、InputStreamReader、       OutputStreamWriter.
--------------------------------------------------------------------------------------    
      InputStream、OutputStream为字节流。(read、write)
      FileWriter、FileReader为字符流。(read、write)
      BufferedInputStream、BuferrOutputStream为字节缓存流。(read、write)
      BufferedWriter、BufferedReader为字符流。(read、write、readLine、newLine换行)
      InputStreamWriter、OutputStreamReader为字节转字符。

   用例:
------------------------------------------------------------
     InputStream、OutputStream、BufferedInputStream、BuferrOutputStream:
      String srcPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture";
      String desPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture1";
      InputStream is=new FileInputStream(srcPath);
      OutputStream out=new FileOutputStream(desPath,true);//只针对文本true可以追加            (append)false覆盖
      BufferededInputStream is=new BufferededInputStream(new FileInputStream(src));
      BufferededOutputStream out=new BufferededOutputStream(new FileOutputStream      (des,true));
      byte []  b=new byte[1024];
      int len=0;
      while ((len=is.read(b))!=-1){
          out.write(b,0,len);
      }
      out.close();
      is.close();          
      
--------------------------------------------------------------------------------------
     FileWriter、FileReader、BufferedWriter、BufferedReader:
      String srcPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture";
      String desPath="D:/Users/Miss/javaEE--马士兵/马士兵第二季视频/picture1";
      FileReader is=new FileReader(srcPath);
      FileWriter out=new FileWriter(desPath,true);//只针对文本true可以追加(append)      false覆盖
      char []  b=new char[1024];               //不同处
      while ((len=is.read(b))!=-1){
          out.write(b,0,len);
      }
      BufferedReader is=new BufferedReader(new FileReader(srcPath));
      BufferedWriter out=new BufferedWriter(new FileWriter(desPath,true));
      String str=null;
      while((str=is.readLine())!=null){
         out.write(str);
      }
      out.flush;
      out.close();
      is.close();   

-------------------------------------------------------------------------------------
   InputStreamReader、OutputStreamWriter
     BufferedWriter br=new BufferedWriter(
                               new OutputStreamWriter(
                                     new FileOutputStream(new Fil("D:/Users/Miss"))
                               )
     );
     String str=null;
      while((str=is.readLine())!=null){
         out.write(str);
      }

-----------------------------------------------------------------------------
2.DataInputStream、DataOutputStream(可以存储对应类型的数据)
 
用例:
  DataOutputStream dos=new DataOutputStream(
                              new FileOutputStream(
                                  new File("c:/hahahs.txt")

                              )
  );
 
  dos.writeInt(666);
  dos.writeDouble(2.5);  
  dos.writeLong(100L);
  dos.writeUTF("haha,嘻嘻");
  dos.flush();  
  dos.colse;
 
  DataInputStream dis=new DataInputStream(
                         new BufferedInputStream(
                              new FileInputStream(
                                  new File("c:/hahahs.txt")
                              )

                         )
  );
  dis.readInt(666);
  dis.readDouble(2.5);  
  dis.readLong(100L);
  dis.readUTF("haha,嘻嘻");
  dis.colse;
 
注意:这里读取顺序必须和写入顺序相同。
-----------------------------------------------------------------------------------

2.ObjectInputStream、ObjectOutputStream  (详情请看序列化与反序列化)

----------------------------------------------------------------------------
3.RandomAccessFile中重要方法:seek(int index);可以用来更具大小分割文件,getFilePointer()   返回文件记录指针的当前位   置,而seek();方法就  是从第几个开始读。(rw表示可读可写)
  用例:
       
       RandomAccessFile raf=new RandomAccessFile(new File("c:/haha.text"),"rw");
       if(raf.len)
       raf.seek(66)表示你要从第66个字节开始读
       btye[] flush=new btye[1024];
       int len=0;
       while(-1!=(len=raf.read(flush))){
             System.out.println("new String(flush,0,len)");  
        }
--------------------------------------------------------------------------------
4.byteArrayInputStream,byteArrayOutputStream(相当于一个容器)
   byte[] buff = new byte[] { 2, 15, 67, -1, -9, 9 };  
        ByteArrayInputStream in = new ByteArrayInputStream(buff);  
        int data = in.read();  
        while (data != -1) {  
            System.out.println(data + " ");  
            data = in.read();  
        }  
        in.close();// ByteArrayInputSystem 的close()方法实际上不执行任何操作  
 
       
   
   ByteArrayoutputStream bout=new ByteArrayOutputStream();
   bout.write(int a);  bout.write(int b);  bout.write(int c);
   byte[] buf=bout.toByteArray();//获取内存缓冲中的数据
   for(int i=0;i<=buf.length;i++)
   {
      System.out.println(buf.toString);
    }
   bout.close();
         
---------------------------------------------------------------------------

5.DataInputStream、DataOutputStream(可以存储对应类型的数据)
 
  用例:
   ByteArrayOutputStream bout=new ByteArrayOutputStream();
   DataOutputStream dos=new DataOutputStream(bout);
   String name="suntao";
   int age=19;
   dos.writeUTF(name);
   dos.writeInt(age);
   dos.writeDouble(2.5);  
   dos.writeLong(100L);
   dos.writeUTF("haha,嘻嘻");
   byte[] buf=bout.toByteArray();//获取内存缓冲区中的数据
   dos.close();
   bout.close();

   ByteArrayInputStream bin=new ByteArrayInputStream(byte[] buf);
   DataInputStream dis=new DataInputStream(bin);
   String name=dis.readUTF();//从字节数组中读取
   int age=dis.readInt();
   dis.readDouble();  
   dis.readLong();
   dis.readUTF();
   dis.close();
   bin.close();
   
  注意:这里读取顺序必须和写入顺序相同。还可以在里面放InputStream、OutputStream

猜你喜欢

转载自blog.csdn.net/silently_frog/article/details/79026506