Java实现使用多线程,实现复制文件到另一个目录,起不一样的名字,创建100万个数据

news2024/11/22 13:58:26

目录

  • 1 需求
  • 2 实现

1 需求

我现在有一个300MB 的文件,想要根据这个文件,创建100万个大小一样的,名称不一样,如何实现,如何比较快点实现

2 实现

1 先准备好这个文件

在这里插入图片描述

2 准备好目录

在这里插入图片描述
3 写代码


    private static void createFile(String sourceFilePath,String destinationFolderPath, int fileNumber) {
        File file1 = new File(sourceFilePath);
        Path sourcePath = Paths.get(sourceFilePath);
        String destinationFileName = "copy_" + UUID.randomUUID().toString() + "_" + file1.getName();
        Path destinationPath = Paths.get(destinationFolderPath, destinationFileName);
        //

        try {
            // 复制源文件到目标文件
            Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        String sourceFilePath = "D:\\100w\\source\\1111111111111.HDF"; // 替换为实际的源文件路径
        String destinationFolderPath = "D:\\100w\\dest"; // 替换为实际的目标文件夹路径
        int numFiles = 1000000; // 需要创建的文件数量
        int numThreads = Runtime.getRuntime().availableProcessors(); // 使用可用的处理器核心数作为线程数

        ExecutorService executorService = Executors.newFixedThreadPool(numThreads);
        try {
            // 创建目标文件夹(如果不存在)
            Files.createDirectories(Paths.get(destinationFolderPath));

            // 循环提交文件创建任务给线程池
            for (int i = 100; i < numFiles; i++) {
                int fileNumber = i;
                executorService.submit(() -> createFile(sourceFilePath,destinationFolderPath, fileNumber));
            }

            executorService.shutdown();
        } catch (IOException e) {
            e.printStackTrace();
        }





        //        try {
        //            // 获取源文件的路径对象
        //            Path sourcePath = Paths.get(sourceFilePath);
        //
        //            // 创建目标文件夹(如果不存在)
        //            Files.createDirectories(Paths.get(destinationFolderPath));
        //
        //            // 循环复制文件并创建副本文件
        //            for (int i = 0; i < numFiles; i++) {
        //                // 构造目标文件的路径对象
        //                String destinationFileName = "copy_" + i + "_" + sourcePath.getFileName();
        //                Path destinationPath = Paths.get(destinationFolderPath, destinationFileName);
        //
        //                // 复制源文件到目标文件
        //                Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
        //            }
        //
        //            System.out.println("文件复制完成!");
        //        } catch (IOException e) {
        //            e.printStackTrace();
        //        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1050485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据分布式处理框架Hadoop

大数据是什么 大数据容量常以TB、PB、甚至EB为单位&#xff0c;远超传统数据库的承载能力&#xff0c;无论入库还是查询都出现性能瓶颈。 Hadoop是什么 Hadoop是开源的分布式计算技术框架&#xff0c;用于处理大规模数据和实现分布式存储。 Hadoop核心组件 HDFS&#xff08;…

PHP8的数据封装(数据隐藏)-PHP8知识详解

面向对象的特点之一就是封装性&#xff0c;也就是数据封装&#xff0c;也被称为数据隐藏。 php8通过限制访问权限来实现数据的封装性&#xff0c;这里用到了public、private、protected、static和final几个关键字。下面来介绍前3个。 1.、public&#xff08;公共成员&#xf…

JavaSE学习之--继承和多态

&#x1f495;"越是不思考的人&#xff0c;越不愿倾听别人说话。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;JavaSE学习之--继承和多态 目录 一.继承(inheritance) 1.为什么要有继承 2.继承的概念 3.继承的语法及代码实现 4.在子类中访…

【1++的Linux】之进程(四)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;进程创建二&#xff0c;进程等待三&#xff0c;进程终止 一&#xff0c;进程创建 在Linux中我们通过fork来创建一个新的进程。新创建的进程叫做子进程&…

No149.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

No147.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

logback.xml springboot 项目通用logback配置,粘贴即用,按日期生成

<configuration scan"false" scanPeriod"10 seconds"><!-- 定义日志存放的根目录 --><property name"log.dir" value"./logs" /><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord"clr&q…

求职面试,如何赢得面试官的满意赞许?

在面试的时候&#xff0c;我们会遇到很多突发事件&#xff0c;这些事件让我们不能很好地将面试进行下去。那么&#xff0c;在出现事情的时候&#xff0c;我们应该如何让面试官满意&#xff1f; 1、选择得体的服装 在面试的时候&#xff0c;想要面试官更好地选择自己&#x…

后端基础php

虚拟机安装网络方面名词介绍快速自建web环境&#xff08;phpstudy&#xff09;前端基础mysql语法前端【展示】----后端【功能实现】标准php 【ASP / ASPX / PHP / JSP】0基础 --->php入门编程--->代码 对逻辑要求高变量--->会改变的量 php---->$aHello…

C理解(二):指针,数组,字符串,函数

指针 int *p; 未绑定:*表示p为指针变量,占4字节 int a 1;p &a; 绑定:p与a地址绑定即p中存放a的地址 *p *p 1; 解引用:p间接访问a的存储空间 左值与右值 int a 1; 左值&#xff1a;变量对应的内存空间 右值&#xff1a;内存空间存储的数 野指针 野指针:指针变量定…

2023下半年信息系统集成设计师

选择题 第一章 信息基础知识第二章 信息系统集成第三章 专业技能知识第四章 项目管理一般知识第五章 项目立项管理第六章 项目整体管理第七章 项目范围管理第八章 项目进度管理第九章 项目成本管理第十章 项目质量管理第十一章 项目管理干系人第十三章 合同管理第十五章 配置管…

秋招应届毕业生求职 如何通过在线测评?

对于应届毕业生来说&#xff0c;求职应聘必定会遇到在线测评的环节&#xff0c;很多同学都会疑惑&#xff0c;不知道怎么应对&#xff0c;也有些同学说我已经很认真了&#xff0c;为何我别刷了下来&#xff1f; 这里面到底有何玄机&#xff1f; 1、应聘前要多做性格测试 …

Django模板加载与响应

前言 Django 的模板系统将 Python 代码与 HTML 代码解耦&#xff0c;动态地生成 HTML 页面。Django 项目可以配置一个或多个模板引擎&#xff0c;但是通常使用 Django 的模板系统时&#xff0c;应该首先考虑其内置的后端 DTL&#xff08;Django Template Language&#xff0c;D…

【Java】复制数组的四种方式

1. System.arraycopy() 用来将一个数组的&#xff08;一部分&#xff09;内容复制到另一个数组里面去。 定义&#xff1a; void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);例&#xff1a; int[] arr1 { 1, 2, 3, 4, 5 }; int[] arr2 new…

青藏高原1-km分辨率生态环境质量变化数据集(2000-2020)

青藏高原平均海拔4000米以上&#xff0c;人口1300万&#xff0c;是亚洲九大河流的源头&#xff0c;为超过15亿人口提供淡水、食物和其他生态系统服务&#xff0c;被誉为地球第三极和亚洲水塔。然而&#xff0c;在该地区的人与自然的关系的研究是有限的&#xff0c;尤其是在精细…

1500*C. Kefa and Park(dfstree)

Kefa and Park - 洛谷 Problem - 580C - Codeforces Examples input 4 1 1 1 0 0 1 2 1 3 1 4 output 2 input 7 1 1 0 1 1 0 0 0 1 2 1 3 2 4 2 5 3 6 3 7 output 2 解析&#xff1a; dfs遍历&#xff0c;记录前一个结点权值是否为1&#xff0c;并且累计路径1的个数…

MySQL学习笔记23

逻辑备份&#xff1a; 1、回顾什么是逻辑备份&#xff1f; 逻辑备份就是把数据库、数据表或者数据进行导出&#xff0c;导出到一个文本文件中。 2、逻辑备份工具&#xff1a; mysqldump&#xff1a;提供全库级、数据库级别以及表级别的数据备份。 mysqldumpbinlog&#xff…

1200*A. Flipping Game(前缀和)

解析&#xff1a; 100数据量&#xff0c;两层遍历每个区间&#xff0c;然后前缀和计算1的个数&#xff0c;维护最大值即可。 #include<bits/stdc.h> using namespace std; #define int long long const int N110; int n,a[N],res,sum[N]; signed main(){scanf("%ll…

[Linux调查局] 编译过程

编译过程 引子编译阶段预处理汇编编译链接 链接详解release && debug 引子 一个程序的编译分为4个部分: 预处理 头文件的展开条件编译宏的展开去掉注释 编译 生成汇编汇编 生成计算机认识的机器指令, 即二进制文件链接 将程序和 库 链接 &#x1f5e8;️这里有一个疑…

《Reinforcement Learning: An Introduction》第8章笔记

文章目录 Chapter 8 Planning and Learning with Tabular Methods8.1 Models and Planning8.2 Dyna: Integrated Planning, Acting, and Learning8.3 When the Models Is Wrong8.4 Prioritized Sweeping8.5 Expected vs. Sample Updates8.6 Trajectory Sampling8.7 Real-time D…