当前位置:首页 > Java

java如何拷贝照片

2026-03-23 07:56:27Java

使用 Files.copy 方法(Java NIO)

Java NIO 的 Files.copy 方法提供了一种简单高效的文件拷贝方式,适用于照片或其他二进制文件。以下是示例代码:

java如何拷贝照片

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;

public class PhotoCopy {
    public static void main(String[] args) {
        Path source = Paths.get("source.jpg");
        Path target = Paths.get("target.jpg");

        try {
            Files.copy(source, target);
            System.out.println("照片拷贝成功");
        } catch (IOException e) {
            System.err.println("拷贝失败: " + e.getMessage());
        }
    }
}

使用 FileInputStreamFileOutputStream

传统的 IO 流方式适用于所有 Java 版本,通过逐字节或缓冲区读写实现拷贝:

java如何拷贝照片

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class PhotoCopyTraditional {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("source.jpg");
             FileOutputStream fos = new FileOutputStream("target.jpg")) {

            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
            System.out.println("照片拷贝完成");
        } catch (IOException e) {
            System.err.println("错误: " + e.getMessage());
        }
    }
}

使用 BufferedInputStream 提升性能

通过缓冲流减少直接 IO 操作次数,显著提升大文件拷贝效率:

import java.io.*;
import java.nio.file.*;

public class BufferedPhotoCopy {
    public static void main(String[] args) {
        Path sourcePath = Paths.get("source.jpg");
        Path targetPath = Paths.get("target.jpg");

        try (InputStream is = new BufferedInputStream(Files.newInputStream(sourcePath));
             OutputStream os = new BufferedOutputStream(Files.newOutputStream(targetPath))) {

            byte[] buffer = new byte[8192];
            int bytesRead;
            while ((bytesRead = is.read(buffer)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 Apache Commons IO 库

第三方库 FileUtils 提供单行代码实现文件拷贝,适合快速开发:

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;

public class PhotoCopyCommons {
    public static void main(String[] args) {
        try {
            FileUtils.copyFile(
                new File("source.jpg"), 
                new File("target.jpg")
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 目标文件存在时,NIO 的 Files.copy 会抛出 FileAlreadyExistsException,需通过 StandardCopyOption.REPLACE_EXISTING 参数覆盖
  • 大文件建议使用缓冲区(如 8KB 以上)减少 IO 操作次数
  • 流操作务必使用 try-with-resources 确保资源释放
  • 检查源文件是否存在(Files.exists(sourcePath))可避免异常

标签: 照片java
分享给朋友:

相关文章

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

java如何react

java如何react

在Java中使用React 要在Java项目中集成React,通常需要将React前端与Java后端结合使用。以下是几种常见的方法: 使用Spring Boot作为后端 Spring Boot是一个…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Thread…