流 编写一个简单复制器

本文介绍了Java中的流概念,包括输入流、输出流、字节流和字符流,以及如何使用FileInputStream和FileOutputStream创建一个简单的文件复制器。在示例中,展示了如何处理IOException并确保资源的正确关闭。
摘要由CSDN通过智能技术生成

流 编写一个简单复制器

  • 流的概念

    在 Java 中,流是一种用于在程序中读写数据的抽象概念。它可以与多种类型的数据源和数据接收器(例如文件、网络连接、内存等)交互,并且可以使用各种过滤器和转换器来处理和修改数据。

    Java 流分为输入流和输出流,每个流都有字节流和字符流两种形式。字节流以字节的形式读写数据,而字符流以字符的形式读写数据。InputStream 和 OutputStream 是用于字节操作的抽象类,而 Reader 和 Writer 是用于字符操作的抽象类。

    Java 中提供了多种流实现类,包括 FileInputStream 和 FileOutputStream 用于读写文件,SocketInputStream 和 SocketOutputStream 用于网络通信等。通过使用这些类,程序可以轻松地通过Java代码读写不同类型的数据源和数据接收器。

  • 流的形象理解(数据流通的载体/形式)

    流就像是一条水流,数据就像是水一样在其中流动。就像水流经过河床、岩石和水闸等物体时会受到限制或改变方向一样,数据在流经不同的流过程(如过滤器或转换器)时也可能会被修改、处理或过滤。最终,这些数据将从流中流出,并被导入到程序中或其他外围设备中,就像水从河流中流出并进入海洋或湖泊一样。通过这种比喻,可以更好地理解流的特点和作用,并在编写代码时更加清楚和具有创造性地使用流。

  • 使用 FileInputStream 和 FileOutputStream 编写一个简单的复制器

    package IO;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class CopyUtils {
        public static void copy(String src, String dest, int cap) {
            FileInputStream fis = null;
            FileOutputStream fos = null;
    
            try {
                fis = new FileInputStream(src);
                fos = new FileOutputStream(dest);
                byte[] bytes = new byte[cap];       // 缓冲区
    
                while(fis.read(bytes) != -1) {
                    fos.write(bytes);
                    fos.flush();
                }
            } catch(IOException e) {
                e.printStackTrace();
                throw new RuntimeException("文件复制失败:"+e.getMessage());
            } finally {
                try {
                    if(null != fos)
                        fos.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
                try {
                    if(null != fis)
                        fis.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
    
    

    编写一个main方法运行

    public class Test {
        public static void main(String[] args) {
            String src = "C:\\Users\\17871\\Desktop\\UI.md";
            String dest = "C:\\Users\\17871\\Desktop\\UI2.0.md";
            CopyUtils.copy(src, dest, 128);
        }
    }
    

    总之会变成两个文件,如果你出问题了,那我也不知道,大概率是文件被加密了吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值