当前位置: 代码迷 >> Java相关 >> Java I/O第二篇 之 (缓冲源 随机流 数组流 数据流)
  详细解决方案

Java I/O第二篇 之 (缓冲源 随机流 数组流 数据流)

热度:558   发布时间:2016-04-22 20:39:25.0
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();    }

 

1楼木头同学
有什么欠缺的地方 ,劳烦各位指正。
  相关解决方案