采用不同的方式,合并多个文件为一个文件。其中包括:Java方法,Windows脚本,CMD命令

news2024/9/27 12:17:28

1. 批处理命令

可以实现不同文件的合并,将文件拖入这个命令即可。在这里插入图片描述

 @echo off
setlocal enabledelayedexpansion

set "outputFile=merged_output.txt"

rem Check if the output file already exists and delete it
if exist "%outputFile%" del "%outputFile%"

rem Loop through all the dragged files
for %%I in (%*) do (
    type "%%I" >> "%outputFile%"
)

echo Files merged successfully into %outputFile%
pause

在这里插入图片描述

2.合并.sql结尾的文件

```java
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;


public class MergeSqlFiles {

    public static void main(String[] args) {
        // 输入SQL文件夹路径
        String sqlFolder = "originalPath";
        // 合并后的文件路径和名称
        String mergedFilePath = "targetPath\\merged.sql";
        //方法1
        mergeSqlFiles(sqlFolder, mergedFilePath);
        //方法2
        mergeSqlFilesByStream(sqlFolder, mergedFilePath);
    }

    /**
     * 合并多个sql文件为一个sql文件
     *
     * @param folderPath
     * @param mergedFilePath
     */
    public static void mergeSqlFiles(String folderPath, String mergedFilePath) {
        //获取文件夹
        File floder = new File(folderPath);
        File[] files = floder.listFiles();
        //新的文件夹
        File newFile = new File(mergedFilePath);
        try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(newFile))) {
            if (files != null) {
                for (File file : files) {
                    if (file.isFile() && file.getName().endsWith(".sql") && !file.getName().startsWith("merged")) {
                        //读取文件内的内容
                        System.out.println("merging file: " + file.getName());
                        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
                            String line;
                            while ((line = bufferedReader.readLine()) != null) {
                                //写入新的一行
                                bufferedWriter.write(line);
                                //写入换行符号
                                bufferedWriter.newLine();
                            }
                        } catch (Exception e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void mergeSqlFilesByStream(String folderPath, String mergedFilePath) {
        //获取文件夹
        Path floder = Paths.get(folderPath);
        //新的文件夹
        Path mergeFile = Paths.get(mergedFilePath);
        try (OutputStream outputStream = new BufferedOutputStream(Files.newOutputStream(mergeFile))) {
            if (Files.isDirectory(floder)) {
                Files.list(floder)
                        .filter(file -> file.toFile().isFile() && file.getFileName().toString().endsWith(".sql") && !file.getFileName().toString().startsWith("merge"))
                        .forEach(file -> {
                            System.out.println("mergeFile:   " + file.getFileName());
                            try (InputStream inputStream = new BufferedInputStream(Files.newInputStream(file))) {
                                byte[] bytes = new byte[1024];
                                int bytesRead;
                                while ((bytesRead=inputStream.read(bytes))!=-1){
                                    outputStream.write(bytes,0,bytesRead);
                                }
                                outputStream.write(System.lineSeparator().getBytes(StandardCharsets.UTF_8));
                            } catch (IOException e) {
                                throw new RuntimeException(e);
                            }
                        });
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}

3.cmd命令

进入对应的文件目录使用此命令

copy *.sql merge.sql

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

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

相关文章

阿尔泰科技——PXIe8912/8914/8916高速数据采集卡

阿尔泰科技PXIe8912/8914/8916高速数据采集卡是2通道同步采样数字化仪,专为输入信号高达 100M 的高频和高动态范围的信号而设计。 与Labview无缝连接,提供图形化API函数。模拟输入范围可以通过软件编程设置为1V 或者5V。配备了容量高达 2GB的板载内存。…

JAVA数组以及小练习

目录 数组的概述和静态初始化 数组的地址值和元素访问 数组的遍历 数组的动态初始化 数组练习 数组的概述和静态初始化 package 数组;public class array1 {public static void main(String[] args){//格式//静态初始化//数据类型 [] 数组名 new 数组类型[]{元素1&#xf…

第8章-第4节-Java中字节流的缓冲流

1、缓冲流:属于高级IO流,并不能直接读写数据,需要依赖于基础流。缓冲流的目的是为了提高文件的读写效率?那么是如何提高文件的读写效率的呢? 在内存中设置一个缓冲区,缓冲区的默认大小是8192字节&#xff…

Vue面试之v-if与v-show的区别

Vue面试之v-if与v-show的区别 DOM渲染初始渲染性能切换开销标签配合源码实现 最近在整理一些前端面试中经常被问到的问题,分为vue相关、react相关、js相关、react相关等等专题,可持续关注后续内容,会不断进行整理~ 作为Vue中两种条件性渲染元…

IaC基础设施即代码:Windows 部署 Terraform

目录 一、实验 1.环境 2.Windows 部署 Terraform 3.VS Code 部署 Terraform插件 二、问题 1.Terraform有哪些功能 2.Chocolatey有何作用 一、实验 1.环境 (1)主机 表1-1 主机 主机系统目标软件工具备注jia Windows 11 Terraform 1.6.6 Power…

推荐两款好用的卫星地图。

问题描述:推荐两款好用的卫星地图。 问题解决:谷歌地球、高德卫星地图。个人感觉谷歌地球好用一些。

inflate流程分析

一.inflate的三参数重载方法else里面逻辑 我们先看到setContentView里面的inflate的调用链: public View inflate(LayoutRes int resource, Nullable ViewGroup root) {return inflate(resource, root, root ! null);}public View inflate(LayoutRes int resource…

吸嘴旋转对位贴合

背景:高精度贴片机需要在上看相机视觉定位芯片,芯片准确的贴合到Lead Frame里面。 问题:已知视觉相机给出的芯片中心位置A1(x1,y1),角度θ1,吸嘴中心的位置A2(x2,y2),需…

【小白专用】C#关于角色权限系统

(C#)用户、角色、权限 https://www.cnblogs.com/huangwen/articles/638050.html 权限管理系统——数据库的设计(一) https://www.cnblogs.com/cmsdn/p/3371576.html 权限管理系统——菜单模块的实现(二) …

金蝶云星空与金蝶云星空对接集成逐个单据查询连通员工新增(3009-销售退货清理卡片)

金蝶云星空与金蝶云星空对接集成逐个单据查询连通员工新增(3009-销售退货清理卡片) 来源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人…

关于java的冒泡排序

关于java的冒泡排序 我们前面的文章中了解到了数组的方法类Arrays,我们本篇文章来了解一下最出名的排序算法之一,冒泡排序!😀 冒泡排序的代码还是非常简单的,两层循环,外层冒泡轮数,里层依次比…

UL2034详细介绍UL 安全单站和多站一氧化碳报警器标准

在介绍相关标准之前先介绍一下UL认证和UL测试报告的区别,检测认证行业6年老司机 UL认证是自愿性的认证,需要检测产品和审核工厂,每个季度审核一次,费用高、时间久,而且审厂非常的严格。 UL测试报告是根据产品选用相应…

KIBANA可视化管理界面说明

更说明转自https://blog.csdn.net/IT_ZRS/article/details/125496588 1 主要结构功能 使用浏览器访问 ip:5601 默认端口,进入首页 Discover:日志管理视图 主要进行搜索和查询Visualize:统计视图 构建可视化的图表Dashboard&#xf…

PaddleSeg学习4——paddle模型使用TensorRT推理(c++)

paddle模型使用TensorRT推理 1 模型末端添加softmax和argmax算子2 paddle模型转onnx模型3 onnx模型转TensorRT模型3.1 安装TensorRT-8.5.3.13.2 使用 trtexec 将onnx模型编译优化导出为engine模型 4 TensorRT模型推理测试5 完整代码6 测试结果 1 模型末端添加softmax和argmax算…

C++编码规范:JSF-AV(未完待续)

联合打击战斗机计划(英语:Joint Strike Fighter Program,简称JSF)是一个由美国和其盟国发起的新一代战斗机发展和采购项目。该项目旨在取代大量已老化的战斗机、战斗轰炸机和攻击机。该项目计划在未来取代各种西方主力战机&#x…

开通微信商家转账到零钱怎么做?场景模板

商家转账到零钱是什么? 商家转账到零钱功能是指商家可以通过支付平台将资金直接转账到用户的零钱账户中。在这种情况下,商家不需要用户提供银行账户信息,而是使用支付平台的转账功能将资金直接转移到用户的零钱账户中。 商家转账到零钱的使…

改进YOLOv8注意力系列四:结合中心化特征金字塔EVCBlock、大核卷积注意力LKA_Attention、全局注意力MobileViTAttention

改进YOLOv8注意力系列三:结合CrissCrossAttention、ECAAttention、EMAU期望最大化注意力 代码大核卷积注意力LKA_Attention中心化特征金字塔EVCBlock全局注意力MobileViTAttention加入方法各种yaml加入结构本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方…

公司官网,选全站定制还是模板建站?

最近更新了公司网站,总算了了一件大事。 虽然很久以前也做网站,但随着技术的发展,以前经常用的dreamwaver、table等形式,不知道被升级了多少代。现在前端同事说起的各种架构,对我来说是云里雾里。只能看懂一点点。 这…

使用 Docker 进行 Go 应用程序引导指南

为在 Docker 中部署的 Go 应用程序做准备 在使用 Go 开发 Web 应用程序时,无论是用于 HTTP 还是其他类型的服务,部署到不同的阶段或环境(本地开发、生产环境等)都是一个常见的考虑因素。在本文中,我们将探讨在 Docker …

Canopen学习笔记——sync同步报文增加数据域(同步计数器)

1.Canfestival同步报文sync的设置 在OD表中的配置如下: 如果0x1006索引的同步报文循环周期时间设置为0则禁用同步报文,这里要注意的就是,上面第一张图也提到了,时间单位是us。第二张图,我的0x1006就设置为0xF4240,也就…