• 【Java】I/O流—缓冲流的基础入门和文件拷贝的实战应用


    🌺个人主页Dawn黎明开始

    🎀系列专栏Java
    每日一句你能坚持到什么程度,决定你能达到什么高度

    📢欢迎大家关注🔍点赞👍收藏⭐️留言📝


    文章目录

    一.🔐字节缓冲流

    📋前言

    1.1🔓字节缓冲流

    1.1.1🔑构造方法

    1.1.2🔑成员方法

    1.1.3🔑实例练习

    1.2🔓字符缓冲流

    1.2.1🔑构造方法

    1.2.2🔑成员方法

    1.2.3🔑实例练习

    二.🔐文件拷贝

    2.1🔓字节流文件拷贝

    2.1.1🔑基本字节流拷贝

    2.1.2🔑缓冲字节流拷贝

    2.2🔓字符流文件拷贝

    2.2.1🔑基本字符流拷贝

    2.2.2🔑缓冲字符流拷贝

    三、🔐I/O流与集合综合实例

    3.1🔓把ArrayList集合中的字符串数据存储到文本文件

    3.1.1🔑分析

    3.1.2🔑代码如下

    3.2🔓从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合

    3.2.1🔑分析

    3.2.2🔑代码如下


    一.🔐字节缓冲流

    📋前言

    在代码中使用缓冲流(Buffered Streams)有许多好处,特别是在处理I/O操作时,它们可以显著提高性能和效率。缓冲流在底层通过缓冲区减少对磁盘或网络的实际读写次数,从而提高了读写性能。相比于直接操作底层输入输出流,缓冲流可以减少频繁的磁盘或网络访问,提升整体的I/O性能。

    1.1🔓字节缓冲流

    1.1.1🔑构造方法

    1.1.2🔑成员方法

    1.1.3🔑实例练习

    🚩(BufferedOutputStream)实例练习

    代码如下👇🏻

    1. package BufferedOutputStreamDemo;
    2. import java.io.BufferedOutputStream;
    3. import java.io.FileOutputStream;
    4. import java.io.IOException;
    5. public class BufferedOutputStreamDemo1 {
    6. public static void main(String[] args) throws IOException {
    7. // FileOutputStream fos=new FileOutputStream("a.txt",true);
    8. // BufferedOutputStream bos = new BufferedOutputStream(fos);
    9. BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));
    10. bos.write("java".getBytes());
    11. bos.write("\n中国".getBytes());
    12. bos.close();
    13. }
    14. }

    🚩(BufferedInputStream)实例练习

    代码如下👇🏻

    1. package BufferedInputStreamDemo;
    2. import java.io.BufferedInputStream;
    3. import java.io.FileInputStream;
    4. import java.io.IOException;
    5. public class BufferedInputStreamDemo1 {
    6. public static void main(String[] args) throws IOException {
    7. BufferedInputStream bis=new BufferedInputStream(new FileInputStream("a.txt"));
    8. byte [] bys=new byte[1024];
    9. int len=0;
    10. while((len=bis.read(bys))!=-1) {
    11. String string=new String(bys,0,len);
    12. System.out.print(string+"\t");
    13. // System.out.print(new String(bys,0,len));
    14. }
    15. bis.close();
    16. }
    17. }

    1.2🔓字符缓冲流

    1.2.1🔑构造方法

    1.2.2🔑成员方法

    继承Writer和Reader类的成员方法

     字符缓冲流的特殊方法:

    BufferedWriter:

    public void newLine():根据系统来决定换行符

    BufferedReader:

    public String readLine():一次读取一行数据

    包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

    1.2.3🔑实例练习

    代码如下👇🏻

    1. package CopyDemo;
    2. import java.io.BufferedReader;
    3. import java.io.BufferedWriter;
    4. import java.io.FileReader;
    5. import java.io.FileWriter;
    6. import java.io.IOException;
    7. public class CopyFileDemo5 {
    8. public static void main(String[] args) throws IOException {
    9. // TODO Auto-generated method stub
    10. BufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));
    11. BufferedReader br=new BufferedReader(new FileReader("b.txt"));
    12. String string=null;
    13. while((string=br.readLine())!=null) {
    14. bw.write(string);
    15. bw.newLine();
    16. bw.flush();
    17. }
    18. bw.close();
    19. br.close();
    20. }
    21. }

    二.🔐文件拷贝

    2.1🔓字节流文件拷贝

    2.1.1🔑基本字节流拷贝

    🚩(一次读写一个字节)

    1. package CopyDemo;
    2. import java.io.FileInputStream;
    3. import java.io.FileOutputStream;
    4. import java.io.IOException;
    5. public class CopyFileDemo1 {
    6. public static void main(String[] args) throws IOException {
    7. // 封装数据源
    8. FileInputStream fis = new FileInputStream("a.txt");
    9. // 封装目的地
    10. FileOutputStream fos = new FileOutputStream("b.txt");
    11. //一次读写一个字节
    12. int b = 0;
    13. while ((b = fis.read()) != -1) {
    14. fos.write(b);
    15. }
    16. // 释放资源(先关谁都行)
    17. fos.close();
    18. fis.close();
    19. }
    20. }

    代码如下👇🏻

    🚩(一次读写一个字节数组)

    1. package CopyDemo;
    2. import java.io.FileInputStream;
    3. import java.io.FileOutputStream;
    4. import java.io.IOException;
    5. public class CopyFileDemo1 {
    6. public static void main(String[] args) throws IOException {
    7. // 封装数据源
    8. FileInputStream fis = new FileInputStream("a.txt");
    9. // 封装目的地
    10. FileOutputStream fos = new FileOutputStream("b.txt");
    11. //一次读写一个字节
    12. int b = 0;
    13. while ((b = fis.read()) != -1) {
    14. fos.write(b);
    15. }
    16. // 释放资源(先关谁都行)
    17. fos.close();
    18. fis.close();
    19. }
    20. }

    2.1.2🔑缓冲字节流拷贝

    🚩(一次读写一个字节)

    代码如下👇🏻

    1. package CopyDemo;
    2. import java.io.BufferedInputStream;
    3. import java.io.BufferedOutputStream;
    4. import java.io.FileInputStream;
    5. import java.io.FileOutputStream;
    6. import java.io.IOException;
    7. public class CopyFileDemo3 {
    8. public static void main(String[] args) throws IOException {
    9. // TODO Auto-generated method stub
    10. BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));
    11. BufferedInputStream bis=new BufferedInputStream(new FileInputStream("b.txt"));
    12. int b=0;
    13. while((b=bis.read())!=-1) {
    14. bos.write(b);
    15. }
    16. bos.close();
    17. bis.close();
    18. }
    19. }

    🚩(一次读写一个字节数组)

    代码如下👇🏻

    1. package CopyDemo;
    2. import java.io.BufferedInputStream;
    3. import java.io.BufferedOutputStream;
    4. import java.io.FileInputStream;
    5. import java.io.FileOutputStream;
    6. import java.io.IOException;
    7. public class CopyFileDemo4 {
    8. public static void main(String[] args) throws IOException {
    9. // TODO Auto-generated method stub
    10. BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("a.txt"));
    11. BufferedInputStream bis=new BufferedInputStream(new FileInputStream("b.txt"));
    12. byte[] bys=new byte[1024];
    13. int len=0;
    14. while((len=bis.read(bys))!=-1) {
    15. bos.write(bys,0,len);
    16. }
    17. bos.close();
    18. bis.close();
    19. }
    20. }

    2.2🔓字符流文件拷贝

    2.2.1🔑基本字符流拷贝

    2.2.2🔑缓冲字符流拷贝

    代码如下👇🏻

    1. package CopyDemo;
    2. import java.io.BufferedReader;
    3. import java.io.BufferedWriter;
    4. import java.io.FileReader;
    5. import java.io.FileWriter;
    6. import java.io.IOException;
    7. public class CopyFileDemo5 {
    8. public static void main(String[] args) throws IOException {
    9. // TODO Auto-generated method stub
    10. BufferedWriter bw=new BufferedWriter(new FileWriter("a.txt"));
    11. BufferedReader br=new BufferedReader(new FileReader("b.txt"));
    12. String string=null;
    13. while((string=br.readLine())!=null) {
    14. bw.write(string);
    15. bw.newLine();
    16. bw.flush();
    17. }
    18. bw.close();
    19. br.close();
    20. }
    21. }

    三、🔐I/O流与集合综合实例

    3.1🔓把ArrayList集合中的字符串数据存储到文本文件

    3.1.1🔑分析

    分析:

        ArrayList集合里存储的是字符串。

       遍历ArrayList集合,把数据获取到。

       然后存储到文本文件中。

       (文本文件说明使用字符流)

    数据源

       ArrayList -- 遍历得到每一个字符串数据

    目的地

       a.txt -- FileWriter -- BufferedWriter

    3.1.2🔑代码如下

    1. package CopyDemo;
    2. import java.io.BufferedWriter;
    3. import java.io.FileWriter;
    4. import java.io.IOException;
    5. import java.util.ArrayList;
    6. public class ArrayListToFileDemo {
    7. public static void main(String[] args) throws IOException {
    8. // 封装数据与(创建集合对象)
    9. ArrayList array = new ArrayList();
    10. array.add("hello");
    11. array.add("world");
    12. array.add("java");
    13. // 封装目的地
    14. BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
    15. // 遍历集合
    16. for (String s : array) {
    17. // 写数据
    18. bw.write(s);
    19. bw.newLine();
    20. bw.flush();
    21. }
    22. // 释放资源
    23. bw.close();
    24. }
    25. }

    3.2🔓从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合

    3.2.1🔑分析

    分析

         通过题目的意思我们可以知道如下的一些内容,

         数据源是一个文本文件。

         目的地是一个集合。

         而且元素是字符串。

    数据源

     b.txt -- FileReader -- BufferedReader

    目的地

     ArrayList

    3.2.2🔑代码如下

    1. package CopyDemo;
    2. import java.io.BufferedReader;
    3. import java.io.FileReader;
    4. import java.io.IOException;
    5. import java.util.ArrayList;
    6. public class FileToArrayListDemo {
    7. public static void main(String[] args) throws IOException {
    8. // 封装数据源
    9. BufferedReader br = new BufferedReader(new FileReader("b.txt"));
    10. // 封装目的地(创建集合对象)
    11. ArrayList array = new ArrayList();
    12. // 读取数据存储到集合中
    13. String line = null;
    14. while ((line = br.readLine()) != null) {
    15. array.add(line);
    16. }
    17. // 释放资源
    18. br.close();
    19. // 遍历集合
    20. for (String s : array) {
    21. System.out.println(s);
    22. }
    23. }
    24. }

    🌺建议大家亲自动手操作,学编程,多实践练习是提升编程技能的必经之路。欢迎大家在评论区进行讨论和指正

  • 相关阅读:
    手摸手带你撸一个拖拽效果
    【接口自动化测试】Eolink Apilkit 安装部署,支持 Windows、Mac、Linux 等系统
    只问耕耘,不问收获,其实收获却在耕耘中
    小阿轩yx-Shell编程之正则表达式与文本处理器
    git常用操作
    传奇开服教程之传奇服务端中如何添加按钮教程以及详细方法
    Hadoop和Spark的对比
    Keepalived+Nginx高可用集群
    JavaWeb进阶案例-实现AJAX+Sevlet前后端分离开发
    VTK--接口讲解之vtkLinearExtrusionFilter
  • 原文地址:https://blog.csdn.net/2301_80760873/article/details/134309128