java读取多个txt文件内容,并按照文件名称排序

2025-05-11 02:04:19
推荐回答(1个)
回答1:

有一些假定,每个文本文件只保存一行数据,只有两个地点,自己看看吧,文件格式不正确,自己修改吧.可以把指定目录内的所有txt文件,合并后保存到指定的txt文件中.

package net.netjava.fileutil;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;

/**
*
* @author HP
*/
public class FileTools {
private final String aPrefix="aaaa";
private final String bPrefix="bbbb";
/**
* 返回第一行内容
* @param fname 文本文件名称
* @return
* @throws java.io.IOException
*/
private String readLineFromTxt(String fname)throws IOException {
String line; // 用来保存每行读取的内容
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fname)));
line = reader.readLine(); // 读取第一行
reader.close();
return line;
}
/**
*
* @param a
* @param b
* @param fname
*/
private void writeToTxt(List a,List b,String fname)throws IOException {
PrintStream ps = new PrintStream(new FileOutputStream(fname));
for(int i=0;i ps.println(a.get(i));
for(int i=0;i ps.println(b.get(i));
ps.close();
}
/**
* 合并指定目录内的多个文本文件
* @param strPath 批量文本文件所在目录名称
* @param strFile 生成的文本文件名称
* @return
*/
public boolean mergeFile(String strPath,String strFile){
boolean f=true;
List listA=new ArrayList();//aaaa内容
List listB=new ArrayList();//bbbb内容
File path=new File(strPath);
if(!path.exists()||!path.isDirectory()){//输入的必须是目录
f=false;
}else{
try{
String[] fname=path.list(new FilenameFilter(){
public boolean accept(File dir, String name) {
if(name!=null&&name.endsWith(".txt"))
return true;
else
return false;
}
});//获取目录内所有.txt结尾的文件名字
for(int i=0;i String tmp=this.readLineFromTxt(strPath+"\\"+fname[i]);
if(tmp==null)
continue;
if(fname[i].startsWith(aPrefix)){
listA.add(aPrefix+tmp);
}else if(fname[i].startsWith(bPrefix)){
listB.add(bPrefix+tmp);
}
}
this.writeToTxt(listA, listB, strFile);
}catch(Exception e){
e.printStackTrace();
f=false;
}
}

return f;
}
public static void main(String[] args){
FileTools ft=new FileTools();
ft.mergeFile("c:\\txt", "d:\\out.txt");
}
}