你的位置:首页 > Java教程

[Java教程]Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)


1:缓冲流 BufferedReader  BufferedWriter

    具有较强的读写能力,能单独读写一行数据,能够减少对硬盘的访问次数。

 1 /** 2  * 缓冲流  能够增强对问价数据的可读性,减少访问读取硬盘的次数,提高效率 3  * */ 4   public static void bufferedDemo() throws IOException{ 5     File fread=new File("E:\\input.txt"); 6     File fwrite=new File("E:\\output.txt"); 7     System.out.println("文件:"+"E:\\output.txt"+"是否可读"+fwrite.canWrite()); 8     BufferedReader bis=null; 9     BufferedWriter bos=null;10     FileReader fis=new FileReader(fread);11     FileWriter fos=new FileWriter(fwrite);12     bis=new BufferedReader(fis);13     bos=new BufferedWriter(fos);14     //读取文件数据,打印展示15     int lineLen=0;16     String arrayStr[]=new String[20];    //创建数组,存储读取内容17     String temp;18     while((temp=bis.readLine())!=null){19       System.out.println(temp);20       arrayStr[lineLen]=temp;21       lineLen++;22     }23     System.out.println("文件读取完毕");24     //输出数据25     String s;26     while((s=bis.readLine())!=null){27       bos.write(s);28       bos.newLine();   //插入换行符29     }30     System.out.println("数据输出完毕。");31     bos.flush();32     bis.close();33     bos.close();34   }

 

2:随机流 RandomAccessFile 

    RandomAccessFile流,既可以读取文件中的数据,也可以写进文件中的数据的一种流

 1 /** 2    * 随机流   可读可写的类型RandomAccessFile 3    * @throws IOException  4    * */ 5   public static void RandomAccessDemo() throws IOException{ 6     //单独使用Random写进一些数据,在读出来 7     int data[]={1,2,3,4,5,6,7,8,9}; 8     File fileName=new File("E:\\RandomAccessFile.txt"); 9     if(!fileName.exists())10       fileName.createNewFile();11     RandomAccessFile raf=new RandomAccessFile(fileName, "rw");12     for(int i=0;i<data.length;i++){13       raf.writeInt(i);14     }15     System.out.println("数据写入完毕。");16     //读取数据17     for(int j=data.length-1;j>=0;j--){18       raf.seek(j*4);19       System.out.printf("\t%d",raf.readInt());20     }21     raf.close();22   }

 

3:数组流     字节数组流:ByteArrayInputStream  ByteArrayOutputStream

                  字符数组流:BytearrayReader  ByteArrayWriter

 1 /** 2    * 数组流  字节数组流(ByteArrayInputStream ByteArrayOutputStream) 3    *    字符数组流(BytearrayReader ByteArrayWriter) 4    * */ 5   public static void ByteArrayDemo() throws Exception{ 6     //字节流 7     ByteArrayOutputStream bos=new ByteArrayOutputStream(); 8     byte [] str="祝你节日快乐".getBytes(); 9     bos.write(str);        //写入数据10     //读取数据11     ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());12     byte[] b=new byte[bos.toByteArray().length];13     bis.read(b);14     System.out.println("写入的数据为:"+new String(b));15     bis.close();16     bos.close();17     //字符流18     CharArrayWriter caw=new CharArrayWriter();19     char [] str2="中秋节快乐!".toCharArray();20     caw.write(str2);21     CharArrayReader car=new CharArrayReader(caw.toCharArray());22     char[] c=new char[caw.toCharArray().length];23     car.read(c);24     System.out.println("读取的数据为:"+new String(c));25     car.close();26     caw.close();27   }

4:数据流   DataInputStream DataOutputStream 

    能够方便的读取与机器无关的java原始数据,读取时不必纠结去字节大小

/**   * 数据流 DataInputStream DataOutputStream 能够方便的读取与机器无关的java原始数据   * */  public static void DataDemo() throws IOException{    //创建文件 ,用数据流写入不同类型的数据,分别读出不同类型的数据    File f=new File("E:\\DataDemo.txt");    FileOutputStream fos=new FileOutputStream(f);    DataOutputStream dos=new DataOutputStream(fos);    dos.writeInt(23);    dos.writeDouble(22.343435);    dos.writeFloat(55.2343f);    dos.writeBoolean(true);    dos.writeChars("中秋快乐!");    System.out.println("数据读入完毕!");    //读取数据    FileInputStream fis=new FileInputStream(f);    DataInputStream dis=new DataInputStream(fis);    System.out.println(dis.readInt());    System.out.println(dis.readDouble());    System.out.println(dis.readFloat());    System.out.println(dis.readFloat());    System.out.println(dis.readBoolean());    char c='\0';    while((c=dis.readChar())!='\0'){      System.out.print(c);    }  dis.close();  dos.close();  }