首页IT科技字节流和字节缓冲流(io流之【字节/字符缓冲流】)

字节流和字节缓冲流(io流之【字节/字符缓冲流】)

时间2025-05-02 12:50:46分类IT科技浏览4262
导读:①字节缓冲流 1 package com....

①字节缓冲流

1 package com.Lucky.io.BufferStream; 2 3 import java.io.*; 4 5 /* 6 字节缓冲流: 是字节流的高级流之一【效率比基础的字节流高的多】 7 格式: 缓冲流 名称 = new 缓冲流(new 基础流) 8 例如: BufferedInputStream bufInStr= 9 new BufferedInputStream(new FileInputStream()); 10 11 */ 12 13 /** 14 * 其他的跟基础流一样【同样可以使用数组来进行一次读取多个字节】 15 */ 16 public class byteBufferStream { 17 public static void main(String[] args) throws IOException { 18 BufferedInputStream bufInStr= 19 new BufferedInputStream(new FileInputStream("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\bufferTest.txt")); 20 BufferedOutputStream bufOutStr= 21 new BufferedOutputStream(new FileOutputStream("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\copy.txt")); 22 23 int val; 24 while ((val=bufInStr.read())!=-1){ 25 bufOutStr.write(val); 26 } 27 28 bufOutStr.close(); //不用关闭基础流           ,因为在缓冲流的底层中已经将基础流进行colse 29 bufInStr.close(); 30 31 } 32 }

②字符缓冲流

1 package com.Lucky.io.BufferStream; 2 3 import java.io.*; 4 5 /* 6 字符缓冲流: 是字符流的高级流之一【效率比基础的字符流高一点                  ,因为在字符流中本身就存在缓冲区】 7 格式: 缓冲流 名称 = new 缓冲流(new 基础流) 8 例如: BufferedReader reader= 9 new BufferedReader(new FileReader("")); 10 11 12 */ 13 14 /** 15 * 其他的跟基础流一样【同样可以使用数组来进行一次读取多个字节】 16 * 注意点:相对于字符基础流来说      ,多了2个独有的方法【readLine】一次读取一行数据 17 * 【newLine】 换行 18 * 19 */ 20 public class charBufferStream { 21 public static void main(String[] args) throws IOException { 22 BufferedReader bufreader= 23 new BufferedReader(new FileReader("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\bufferTest.txt")); 24 BufferedWriter bufWriter= 25 new BufferedWriter(new FileWriter("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\charBufferTest.txt")); 26 27 28 29 30 String val; 31 while ((val=bufreader.readLine())!=null){ //结尾最后返回null 32 System.out.println(val); 33 bufWriter.newLine(); //换行【可以不同的系统中使用不用再使用\r\n】 34 } 35 36 37 //关闭流 38 bufWriter.close(); 39 bufreader.close(); 40 } 41 }

综合小练习:

练习一材料:

12.穿上婚纱让朋友见证我们10.白头偕老是我一生宿愿14.就让我给你一场想要的最美的婚礼4.你我在调整着紧张的情绪7.我想和你结婚做炙热的亲吻8.我想和在这开始私定终身1.嘉宾正准备着盛装出席2.亲眼目睹这一浪漫的婚礼3.红毯散满花瓣爱情在洋溢9.香槟塔前许下了誓言13.礼堂里营造出浪漫气息11.我想和你结婚做最幸福的人5.神圣的一刻开始记录珍惜6.感谢这份爱你我都未缺席
package com.Lucky.io.BufferStream.test; import java.io.*; import java.util.*; /** * 练习1:将sort.txt【顺序乱的】的数据排序输出到新的文件中【拷贝数据加排序】 */ public class sort { public static void main(String[] args) throws IOException { //创建对象 // BufferedInputStream in= // new BufferedInputStream(new FileInputStream("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\test\\sort.txt")); BufferedWriter out= new BufferedWriter(new FileWriter("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\test\\sortNew.txt")); BufferedReader bufreader= new BufferedReader(new FileReader("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\test\\sort.txt")); //////////////////解法一:ArrayList///////////////////////////////// byte[] arr=new byte[1024]; String val; ArrayList<String> li=new ArrayList<>(); while ((val=bufreader.readLine())!=null){ li.add(val); } //System.out.println(li); li.sort(new Comparator<String>() { @Override public int compare(String o1, String o2) { int min=Integer.parseInt(o1.split("\\.")[0]); int max=Integer.parseInt(o2.split("\\.")[0]); return min-max; } }); System.out.println(li); //写出数据 for (String s : li) { out.write(s); out.newLine(); //换行 } //关闭流 out.close(); bufreader.close(); //////////////////解法二:TreeMap自动排序///////////////////////////////// // TreeMap<Integer,String> map=new TreeMap<>(); // while ((val=bufreader.readLine())!=null){ // int i = Integer.parseInt(val.split("\\.")[0]); // map.put(i,val); // } // Set<Map.Entry<Integer, String>> entries = map.entrySet(); // for (Map.Entry<Integer, String> entry : entries) { // String value = entry.getValue(); // out.write(value); // out.newLine(); // } // // out.close(); // bufreader.close(); } }

练习2材料:

testCount.txt文件的初始数据是 ---》 0

1 package com.Lucky.io.BufferStream.test; 2 3 import java.io.*; 4 5 /* 6 练习2: 定义一个小程序     ,要求前面三次免费运行                  ,第四次开始要提示开通会员使用 7 8 注意点:字符流的读取/写出对象创建【如果指定相同的路径就注意】不要写到一起 9 因为            ,在创建写出对象时     ,会将原来路径的内容清空 10 */ 11 12 /** 13 * 每天一个小知识: IO的使用原则: 14 * ★什么时候用就什么时候创建 15 * ★用完就立马关闭 16 */ 17 public class SMG { 18 public static void main(String[] args) throws IOException { 19 //创建读取文件对象 20 BufferedReader reader= 21 new BufferedReader(new FileReader("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\test\\testCount.txt")); 22 //获取行数据 23 String s = reader.readLine(); 24 //类型转换 25 int i = Integer.parseInt(s); 26 i++; 27 reader.close(); 28 //判断次数 29 if(i<4){ 30 System.out.println("运行了"+i+"次"); 31 }else { 32 System.out.println("本次第"+i+"运行                 ,只能免费运行"+"3次"); 33 } 34 35 //创建写出对象 36 BufferedWriter writer= 37 new BufferedWriter(new FileWriter("H:\\项目\\javaSE\\IO\\src\\com\\Lucky\\io\\BufferStream\\test\\testCount.txt")); 38 //将新的值写出到文件中 39 writer.write(i+""); 40 writer.close(); 41 42 } 43 }
声明:本站所有文章            ,如无特殊说明或标注,均为本站原创发布            。任何个人或组织                 ,在未征得本站同意时                  ,禁止复制            、盗用                 、采集      、发布本站内容到任何网站            、书籍等各类媒体平台                 。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
css入门教程电子书(Css3入门详解) 引用类型和基本数据类型有什么区别(第一百一十一篇:基本引用类型Date)