io基础总结

来源:互联网 发布:ubuntu中删除文件夹 编辑:程序博客网 时间:2024/05/29 16:34
JAVA IO流总结 
 
IO流的三种分类方式 
    1.按流的方向分为:输入流和输出流     2.按流的数据单位不同分为:字节流和字符流     3.按流的功能不同分为:节点流和处理流 
IO流的抽象类: 
    字符流:Reader Writer 

    字节流:InputStream(读数据)     OutputStream(写数据) 

缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。 
    此处理流的构造方法都得传相对应的基类类型 
    BufferedReader:提供了readLine方法用于高校读取一行字符串     BufferedWriter:提供了newLine用于写入一个行分隔符也就是换行     BufferedInputStream 没多大用处     BufferedOutputStream 没多大用处 

转换流:主要作用将字节流转换成字符流。用处较大! 
    转换流在构造时可以指定其编码集合     InputStreamReader需要和InputStream套接     OutputStreamWriter需要和OutputStream套接 
    例:OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream(文件路径); 
    方法例:osw.getEncoding(); 获得流的编码方式 
数据流与字节数组流: 
    数据流主要为实现可以存取Java原始数据类型如long,boolean     数据流是字节流 
    DataInputStream需要和InputStream套接     DataOutputStream需要和OutputStream套接 
    DataInputStream方法:readBoolean() readInt() read……()……     readUTF():网络传输常用方法 读一个Unicode字符串     DataOutputStream方法与 DataInputStream基本对应为写的方法     //此构造函数等于已可以往一个字节数组里输入内容 
    ByteArrayOutputStream baos = new ByteArrayOutputStream ();     //此方法为获取一个字节数组方法返回字节数组     baos.toByteArray(); 
    //此方法获取字节数组占了多少字节 

    new ByteArrayInputStream(一个字节数组)。available()  ByteArrayOutputStream baos =  new ByteArrayOutputStream();      

DataOutputStream dos =   new DataOutputStream(baos);  

   try { 

  dos.writeDouble(Math.random());  

    dos.writeBoolean(true); 

    ByteArrayInputStream bais =   new ByteArrayInputStream(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) {       e.printStackTrace();    }  

 
  Print流 
    Print流只有输出流无输入流,PrintWriter和PrintStream分别针对字符字节     两个类提供了重载的Print和Println方法用于多种数据类型的输出     PrintWriter和PrintStream的输出操作不会抛出异常     PrintWriter和PrintStream有自动flush功能 
    ----System.setOut(接收OutputStream类):用于设置系统默认输出流 
Object流 
    等同于c#序列化,用直接将Object写入或读出     transient关键字为不序列化此成员变量     需要序列化的类必须实现Serializable接口 

    主要方法:writeObject(Object); readObject();     读出为Object类型需要强转数据类型 

 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("d:/share/java/io/testobjectio.dat");  

        ObjectOutputStream oos = new ObjectOutputStream(fos);  

     oos.writeObject(t); 

      oos.flush(); 

    oos.close();           

      FileInputStream fis = new FileInputStream("d:/share/java/io/testobjectio.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 23 { 
   int i = 10;    int j = 9; 

    double d = 2.3; 

   transient int k = 15;  } 

0 0
原创粉丝点击