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

[复制链接]
查看11 | 回复0 | 2010-1-28 19:56:01 | 显示全部楼层 |阅读模式
有一些假定,每个文本文件只保存一行数据,只有两个地点,自己看看吧,文件格式不正确,自己修改吧.可以把指定目录内的所有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<a.size();i++)
ps.println(a.get(i));
for(int i=0;i<b.size();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<fname.length;i++){
String tmp=this.readLineFromTxt(strPath+"\\"+fname);
if(tmp==null)
continue;
if(fname.startsWith(aPrefix)){
listA.add(aPrefix+tmp);
}else if(fname.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");
}}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行