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(); }
原标题:Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)
关键词:JAVA