21xrx.com
2024-11-10 00:18:04 Sunday
登录
文章检索 我的文章 写文章
Java中如何实现文件复制?
2023-06-18 00:45:48 深夜i     --     --
Java文件复制 字节流 NIO

在日常开发中,经常会遇到文件复制的问题。Java中提供了多种实现文件复制的方法,本文介绍其中比较常用的两种方法:使用字节流和使用NIO。

1. 使用字节流实现文件复制

使用字节流实现文件复制相对简单,主要包括以下步骤:

(1)创建输入流和输出流对象。

(2)定义缓冲区,读取文件内容到缓冲区。

(3)将缓冲区中的数据写入输出流,完成文件复制。

代码示例:


public static void copyFileByByte(File source, File target) {

  try (InputStream in = new FileInputStream(source);

     OutputStream out = new FileOutputStream(target)) {

    byte[] buffer = new byte[1024];

    int byteCnt;

    while ((byteCnt = in.read(buffer)) != -1) {

      out.write(buffer, 0, byteCnt);

    }

  } catch (IOException e) {

    e.printStackTrace();

  }

}

2. 使用NIO实现文件复制

NIO是Java中的一种新的IO机制,相较于传统的IO机制,在处理大量数据时,NIO会更加高效。使用NIO实现文件复制,主要包括以下步骤:

(1)创建输入流和输出流对象。

(2)定义缓冲区,读取文件内容到缓冲区。

(3)将缓冲区中的数据写入输出流,完成文件复制。

代码示例:


public static void copyFileByNIO(File source, File target) {

  try (FileChannel inChannel = new FileInputStream(source).getChannel();

     FileChannel outChannel = new FileOutputStream(target).getChannel()) {

    MappedByteBuffer buffer = inChannel.map(FileChannel.MapMode.READ_ONLY, 0, source.length());

    outChannel.write(buffer);

  } catch (IOException e) {

    e.printStackTrace();

  }

}

总结

上述两种方法都可以实现文件的复制,具体使用哪种方法取决于具体情况。对于较小的文件,使用字节流复制即可,对于大文件,使用NIO实现复制会更高效。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复