Java语言怎么实现对txt文件的自动编号,按照时间将每一个txt文件分配一个编号

Java语言怎么实现对txt文件的自动编号,按照时间将每一个txt文件分配一个编号,并且将文件全部合并,按照编号写入

代码如下, 文件路径你换下 :

import java.io.*;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.util.*;

public class TxtFileAutoNumbering {
    public static void main(String[] args) {
        String sourceDirectory = "mytxt";  // 目录路径
        String mergedFileName = "merged.txt"; // 文件路径

        try {
            List<File> fileList = Arrays.asList(new File(sourceDirectory).listFiles());
            Collections.sort(fileList); // 按照文件名进行排序

            mergeTxtFiles(fileList, mergedFileName);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void mergeTxtFiles(List<File> fileList, String mergedFileName) throws IOException {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(mergedFileName))) {
            for (File file : fileList) {
                if (file.getName().endsWith(".txt")) {
                    BufferedReader reader = new BufferedReader(new FileReader(file));
                    String line;
                    while ((line = reader.readLine()) != null) {
                        writer.write(line);
                        writer.newLine();
                    }
                    reader.close();
                }
            }
        }
    }

    private static void copyTxtFileWithNumber(File sourceFile, String targetDirectory) throws IOException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
        Date currentTime = new Date();
        String timestamp = formatter.format(currentTime); // 当前时间的字符串表示

        String sourceFileName = sourceFile.getName();
        String targetFileName = timestamp + "_" + sourceFileName; // 带有编号的文件名

        File targetFile = new File(targetDirectory, targetFileName);

        Files.copy(sourceFile.toPath(), targetFile.toPath());
    }
}


  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1081136
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:java使用多线程实现文件的合并——把多个txt文件合并为一个txt文件
  • 除此之外, 这篇博客: Java如何将多个txt文件合并为一个统一的txt文件中的 Java如何将多个txt类型文件合并为一个统一的txt文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 最近从网上找了很多md的学习文档,文件很多。类似于笔记,每天都有,分成了多个,我想把这些文件合并为一个txt文件,然后放在我的有道云笔记里,这样就成了我自己的一个学习笔记了(虽然是偷的,呵呵),现在讲究的是知识的获取能力,怎么学会的就不要太过于较真了。
    实现的方式使用java的IO流读写流,外加循环,很简单,但是很实用。
    文件信息如下:
    md格式为markdown的内容和txt是类似的
    在这里插入图片描述
    上面这些文件合并为一个统一的1.md

    package com.cache.demo;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class HeBingTxt {
    
    	public static void main(String[] args) throws IOException {
    		String FileOut="C:\\Users\\Administrator\\Desktop\\基础笔记\\1.md";
    		BufferedWriter bw=new BufferedWriter(new FileWriter(FileOut));
    		for (int i = 1; i < 27; i++) {
    			String num=Integer.toString(i);
    			if (num.length()<2) {
    				num="0"+num;
    			}
    			String FileName="C:\\Users\\Administrator\\Desktop\\基础笔记\\day"+num+"笔记.md";
    			File file=new File(FileName);
    			if(file.exists()) {
    				System.out.println(FileName);
    				BufferedReader br = new BufferedReader(new FileReader(file));
    				String line;
    				while((line=br.readLine())!=null) {
    					bw.write(line);
    					bw.newLine();
    				}
    			br.close();
    			}
    		}
    		bw.close();
    	}
    
    }
    

    **

  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案

    首先,我们需要根据文件的创建时间为每个txt文件分配一个编号。然后,我们需要将这些文件按照编号的顺序进行合并,并将它们写入一个文件。下面是实现这个功能的步骤:

    步骤1:获取指定目录下的所有txt文件

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    public class TxtFiles {
        public static List<File> getTxtFiles(String directoryPath) {
            List<File> txtFiles = new ArrayList<>();
            File directory = new File(directoryPath);
            File[] files = directory.listFiles();
    
            for (File file : files) {
                if (file.isFile() && file.getName().endsWith(".txt")) {
                    txtFiles.add(file);
                }
            }
    
            return txtFiles;
        }
    }
    

    步骤2:为每个文件分配一个编号(基于文件的创建时间)

    import java.io.File;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class FileNumbering {
        public static void assignNumber(List<File> txtFiles) {
            Collections.sort(txtFiles, new Comparator<File>() {
                @Override
                public int compare(File file1, File file2) {
                    return Long.compare(file1.lastModified(), file2.lastModified());
                }
            });
    
            for (int i = 0; i < txtFiles.size(); i++) {
                File file = txtFiles.get(i);
                String oldName = file.getName();
                String newNumber = String.format("%03d", i + 1); // 格式化成三位数的编号
                String newName = newNumber + "_" + oldName;
    
                if (!oldName.equals(newName)) {
                    File newFile = new File(file.getParent(), newName);
                    file.renameTo(newFile);
                    txtFiles.set(i, newFile);
                }
            }
        }
    }
    

    步骤3:将文件合并并按照编号的顺序写入一个文件

    import java.io.*;
    
    public class FileMerge {
        public static void mergeFiles(List<File> txtFiles, String outputFilePath) {
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))) {
                for (File file : txtFiles) {
                    try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                        String line;
                        while ((line = reader.readLine()) != null) {
                            writer.write(line);
                            writer.newLine();
                        }
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    步骤4:在主方法中调用这些方法并测试

    import java.util.List;
    
    public class Main {
        public static void main(String[] args) {
            String directoryPath = "path/to/txt/files"; // 指定txt文件存放的目录路径
            String outputFilePath = "path/to/output/file.txt"; // 指定合并后的文件输出路径
    
            List<File> txtFiles = TxtFiles.getTxtFiles(directoryPath);
            FileNumbering.assignNumber(txtFiles);
            FileMerge.mergeFiles(txtFiles, outputFilePath);
    
            System.out.println("合并完成");
        }
    }
    

    请将 "path/to/txt/files" 替换为存储txt文件的实际目录路径,并将 "path/to/output/file.txt" 替换为输出文件的实际路径。

    这个解决方案首先调用 TxtFiles.getTxtFiles 方法获取指定目录下的所有txt文件。然后,调用 FileNumbering.assignNumber 方法为每个文件分配一个基于创建时间的编号。最后,调用 FileMerge.mergeFiles 方法将文件合并并按照编号的顺序写入一个文件。

    请注意,以上代码只提供了一种实现思路,具体实现可能需要根据实际情况进行适当的调整和修改。