合并多个文件到一个文件内

2023-11-03

package com.caini.psaer.test;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class IoTest {

    public static void main(String[] args) {
        FileOutputStream fos= null;
        try {

            String filepath = "D:\\workspace\\TW-RDSSOAP-SPRINGBOOT\\src\\main\\java";  // 指定要读取的文件夹
            File file = new File(filepath);

            File newfile=new File("D:\\IoTest\\new4\\aaa.txt");  //合并文件输出位置
            //获取输出文件的父目录
            File fileParent = newfile.getParentFile();
            //判断是否存在,若不存在就创建
            if (!fileParent.exists()) {
            // 创建父目录文件夹
                fileParent.mkdirs();
            }
            //判断文件是否存在
            if (!newfile.exists()) {
                //创建文件
                newfile.createNewFile();
            }
            //新文件输出流
            fos=new FileOutputStream(newfile);


            if (file.isDirectory()) {
                List<String> list= new ArrayList<String>();
                List<String> file2 = getFile(file,list);
               String[]  filelist=  file2.toArray(new String[0]);  //集合转数组

                for (int i = 0; i < filelist.length; i++) {
                    File readfile = new File(filelist[i]);
                    String absolutePath = readfile.getAbsolutePath();  
                        String fileName = readfile.getName();      // 文件夹下文件的名

                        System.out.println("absolutePath:"+absolutePath);

                        FileInputStream  fis=new FileInputStream(absolutePath);
                        byte[] byteArray = new byte[1024];
                        int byteLength= 0;
                        try{
                            fos.write(absolutePath.getBytes(StandardCharsets.UTF_8)); //将文件的绝对路径也输出出来
                            fos.write("\r\n".getBytes(StandardCharsets.UTF_8));//换行
                            while ((byteLength = fis.read(byteArray)) != -1) {  //读文件
                                fos.write(byteArray,0,byteLength);  //写文件
                            }
                            fos.write("\r\n".getBytes(StandardCharsets.UTF_8)); //每写完一个文件就重新换行
                        } catch (IOException e) {
                            e.printStackTrace();
                        }finally {
                            try {
                                fis.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                }
                System.out.println("All finished");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {

                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

//递归获取当前文件夹下所有文件的绝对路径
    static List<String> getFile(File file,List<String> list){
        File[] files = file.listFiles();
        if (files != null){
            for (File tempf : files){
                if (tempf.isFile()){
                    System.out.println(tempf.getAbsolutePath());
                    list.add(tempf.getAbsolutePath());  //将文件的绝对路径放到集合中
                }else if (tempf.isDirectory()){
                    getFile(tempf,list);
                }
            }
        }else {
            System.out.println("files为null");
        }

        return list;
    }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并多个文件到一个文件内 的相关文章

随机推荐

  • Hungarian method 匈牙利算法 解决指派问题

    这个也讲得不错 https blog csdn net Wonz5130 article details 80678410 from scipy optimize import linear sum assignment import nu
  • javascript XMLHttpRequest 对象的open() 方法参数说明

    下文是从w3c上摘录下来的 其中参数 method 说明的很简短 不是很理解 所以又找了些资料作为补充 文中带括号部分 XMLHttpRequest open 初始化 HTTP 请求参数 语法 open method url async u
  • vscode设置第三方库路径和自动代码补全

    1 打开VSCode gt 文件 gt 首选项 gt 设置 gt 用户 gt 扩展 gt Python gt Auto Complete Extra Paths gt 在settings json中编辑 在settings json中添加代
  • vue工程可视化大屏 自适应问题

    目录 三大常用方式 vw vh方案 scale方案 rem vw vh方案 最新方式 调用autofit js包 vue工程可视化大屏 自适应问题 可视化大屏的适配是一个老生常谈的话题了 现在其实不乏一些大佬开源的自适应插件 工具但是我为什
  • Java 的使用习惯

    定义配置文件信息 有时候我们为了统一管理会把一些变量放到 yml 配置文件中 例如 用 ConfigurationProperties 代替 Value 使用方法 定义对应字段的实体 Data 指定前缀 ConfigurationPrope
  • Windows两台服务器之间实现文件共享

    1 检查工作 1 win r 输入services msc检查TCP IP NetBIOS Helper服务是否已经开启 2 两台服务器之间需要开放139 445端口 或者关闭防火墙 2 共享文件夹配置 1 共享设置 新建share文件夹
  • Java基础——参数传参(基本类型,引用类型传参)

    文章目录 一 方法 参数 返回值 二 参数传递过程中的底层原理 1 创建对象过程中发生的事 1 对象创建并存储 2 基本类型作为形参传递 值传递 3 引用类型作为形参传递 本质也是值传递 4 Java中的引用与C 中引用 指针的区别 三 特
  • scala Stack可变栈

    import scala collection mutable 栈 先进后出 后进先出 top 获取栈顶元素 但是不会把这个元素从栈顶移除 push 表示入栈操作 相当于把元素压入栈顶 pop 移除栈顶元素 并返回此元素 clear 清除集
  • 测试gpt的function函数功能

    官网API 科学上网查看 1 我对该功能的理解 利用gpt的上下文理解能力 在执行方法run conversation xx 时 目标锁定在 提取出functions里每个function下required属性对应的值 而真正的functi
  • 2020泰迪杯数据挖掘挑战赛总结(A题)

    写在开始 转眼间 泰迪杯数据挖掘挑战赛已经过去了10多天 趁着结果还没出来 还有这股热乎劲 写篇文章总结下 文章目录 最初 学习阶段 解题阶段 最终 最初 最初的参赛原因简单粗暴 后来也渐渐发现 白嫖也的确学到不少 刚开始组队 选好队友很重
  • 字节对齐

    一 什么是字节对齐 为什么要对齐 现代计算机中内存空间都是按照byte划分的 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问 这就需要各种类型数据按照一定的规则在空间上
  • Hbase解决ERROR: KeeperErrorCode = ConnectionLoss for /hbase/master报错

    1 在单机模式中 要先修改一个文件 usr local hbase conf hbase site xml hbase site xml内容
  • element ui + vue项目,修改el-divider默认样式

    修改el divider 垂直分割线的样式 以修改margin为例 其他样式改变同理
  • 实验2-动态规划编程题4. 01背包问题

    问题描述 给定一个容量为C的背包 现有n个物品 每个物品的体积分别为s1 s2 sn 价值分别为v1 v2 vn 每个物品只能放入一次 背包最多能装入价值为多少的物品 输入形式 输入的第1行包含2个整数C和n 分别表示背包容量和物品个数 接
  • gdb--设置断点的方法

    package utils import fmt github com gin gonic gin net http type Album struct ID string json id Title string json title A
  • 一个赛马算法

    原题 25匹马 5条跑道 怎样能用最快方式 得到最快的三匹马 假设每匹马的体力保持不变 速度固定 解法 堆排序 如下 package org algorithm search import java util ArrayList impor
  • 【vue】vue2 获取本地IP地址

    具体代码
  • 如何挖掘关键词

    挖掘关键词是SEO的基本功 借助的工具有 百度下拉框 百度相关搜索 搜搜问问 百度知道 百度推广助手 百度指数等 1 百度下拉框和相关搜索 通过下拉框和相关搜索搜集长尾词的方法是一级一级搜集 比如搜索SEO 然后再搜索SEO的下拉框里面的S
  • STM32F4 RTC-Alarm 的使用(RT-Thread操作系统)

    文章目录 1 工程的创建和配置 1 1 CubeMX 的配置 1 1 1 时钟源的选择 1 1 2 Debug 引脚配置 1 1 3 控制台串口的配置 1 1 4 RTC的配置 1 1 5 时钟树配置 1 1 6 代码生成 1 2 RT T
  • 合并多个文件到一个文件内

    package com caini psaer test import java io import java nio charset StandardCharsets import java util ArrayList import j