21xrx.com
2025-03-26 10:07:30 Wednesday
文章检索 我的文章 写文章
Java中如何实现文件复制?
2023-06-18 00:45:48 深夜i     8     0
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实现复制会更高效。

  
  

评论区

请求出错了