首页 > 其他分享 >文件拼接

文件拼接

时间:2023-07-29 13:44:06浏览次数:27  
标签:文件 fileNames 拼接 FILE new PATH line null

import java.io.*;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List;

public class Main {
    private static String FILE_PATH = "D:\\BaiduNetdiskDownload\\test";
    private static String DEST_FILE_PATH = "D:\\BaiduNetdiskDownload\\3.md";


    public static void main(String[] args) throws IOException {

        ArrayList<String> fileNames = (ArrayList<String>) getFileNames(new File(FILE_PATH), new ArrayList<>());
        BufferedReader br = null;
        PrintWriter pw = null;
        try {
            pw = new PrintWriter(DEST_FILE_PATH);
            for (String fileName : fileNames) {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(FILE_PATH + File.separator + fileName)));
                String line;
                while ((line = br.readLine()) != null) {
                    if (line.indexOf("####") > -1) {
                        line = line.replaceAll("####", "#####");
                    } else if (line.indexOf("###") > -1) {
                        line = line.replaceAll("###", "####");
                    } else if (line.indexOf("##") > -1) {
                        line = line.replaceAll("##", "###");
                    } else if (line.indexOf("#") > -1) {
                        line = line.replaceAll("#", "##");
                    }
                    pw.println(line);
                }
                br.close();
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            br.close();
            pw.close();
        }
        System.out.println("Hello world!");
    }

    private static List<String> getFileNames(File file, List<String> fileNames) {
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isDirectory()) {
                getFileNames(f, fileNames);
            } else {
                fileNames.add(f.getName());
            }
        }
        return fileNames;
    }

    private void test() throws IOException {
        ArrayList<String> fileNames = (ArrayList<String>) getFileNames(new File(FILE_PATH), new ArrayList<>());
        BufferedReader br = null;
        PrintWriter pw = null;
        FileChannel inputChannel = null;
        FileChannel outputChannel = null;
        try {
            outputChannel = new FileOutputStream(DEST_FILE_PATH).getChannel();
            long index = 0;
            for (String fileName : fileNames) {
                inputChannel = new FileInputStream(FILE_PATH + File.separator + fileName).getChannel();
                outputChannel.transferFrom(inputChannel, index, inputChannel.size());
                index += inputChannel.size();
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            inputChannel.close();
            outputChannel.close();
        }

        System.out.println("Hello world!");
    }

}

标签:文件,fileNames,拼接,FILE,new,PATH,line,null
From: https://www.cnblogs.com/figsprite/p/17589703.html

相关文章

  • .NetCore中dump文件的创建和分析
    1、通过程序生成dump文件  安装nuget包:Microsoft.Diagnostics.NETCore.Client  生成dump文件代码:  varclient=newDiagnosticsClient(Environment.ProcessId);client.WriteDump(DumpType.Full,Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"dumps","1.dump&quo......
  • linux获取子文件和子目录
    linux获取子文件和子目录#include<dirent.h>#include<sys/stat.h>#include<string>#include<vector>#include<stdio.h>//#include<android/log.h>#defineTAG"[demo]"//#defineLOGD(...)__android_log_print(AND......
  • CTFer成长记录——CTF之Web专题·攻防世界—fileinclude·好多文件呀
    一、题目链接https://adworld.xctf.org.cn/challenges/list二、解法步骤  WRONGWAY!<?phpinclude("flag.php");highlight_file(__FILE__);if(isset($_GET["file1"])&&isset($_GET["file2"])){$file1=$_GET["file1"......
  • linux tar命令之小知识-解压指定层级目录以及指定文件
    我们以解压k8s二进制源码文件为例,只解压出第三层级目录下的kube-apiserver、kube-controller-manager、kubectl、kubelet、kube-proxy、kube-scheduler这几个文件。k8s源码文件目录结构,目录实在太多了,我删除了大部分,不在这里显示[root@k8s-master01tmp]#treekubernetesku......
  • 基于Python实现RLE格式分割标注文件的格式转换
    下面我将详细讲解“基于Python实现RLE格式分割标注文件的格式转换”的完整攻略。一、RLE格式分割标注文件是什么?RLE格式是一种更加高效的图像语义分割数据表示格式,其数据以一串RLE编码的方式进行存储,而不是以像素点的形式存储,有效减少了数据的体积。RLE格式分割标注文件即是使......
  • Qt 生成应用程序(二)软件多图标与文件操作
    目录关联某种文件的默认打开方式assocftype解决方案设置文件默认图标应用软件添加多个图标综合方法嘿,各位Qt桌面应用开发的同学们(应该Qt大部分应用场景就是这个吧......
  • kernel源码(二十四)文件系统
     1minix文件系统minix文件系统磁盘结构如下所示图中,整个磁盘被划分为360个磁盘块(每个磁盘块1Kb)引导块,MBR就在这个磁盘块中。当计算机加电,ROMBIOS将会自动读取该磁盘块到内存并执行其中的代码。分区,一块磁盘,我们可以最多有4个主分区。MBR大小为一个扇区大小,其中446byte......
  • 文件包含
    文件包含当我们在遇到文件上传并且有白名单校验的时候,利用文件包含可以getshell(brupsuit)上传文件,该文件后缀名(php),插入一句话木马,用菜刀连接原理程序员通常会把可重复使用函数或语句写到单个文件中,在使用某个功能时,直接调用此文件,不用再编写调用文件的过程称为包含。PHP中的......
  • 使用scp在Linux服务器之间传输文件
    第一章、scp命令介绍scp就是securecopy,一个在linux下用来进行远程拷贝文件的命令。scp文件名1远程用户名@IP地址:文件名2几个参数:-v用来显示进度.可以用来查看连接-C使能压缩选项-P选择端口-4强行使用IPV4地址.-6强行使用IPV6地址.第二章、实......
  • 【Azure Cloud Service】云服务升级后,查看配置文件发现编码变为utf-16
    问题描述通过MigratetoARM,把经典云服务升级成云服务(外延支持)后,在查看云服务的配置XML文件,发现文件的编码格式由UTF-8改变为UTF-16 由此,引发了三个问题1)CloudService是否支持UTF-8,UTF-16这两种编码呢?2)为什么CloudService的配置文件会发生改变?3)配置文件发生改......