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());
}
}
最近从网上找了很多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();
}
}
**
首先,我们需要根据文件的创建时间为每个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
方法将文件合并并按照编号的顺序写入一个文件。
请注意,以上代码只提供了一种实现思路,具体实现可能需要根据实际情况进行适当的调整和修改。