java读取多个txt文件内容,并按照文件名称排序
最近有很多批量生成的txt文件记录数据的数量,文件名称如下:aaaa20100110.txt,aaaa20100111.txt,bbbb20100110.txt,bbbb...
最近有很多批量生成的txt文件记录数据的数量,文件名称如下:aaaa20100110.txt,aaaa20100111.txt,bbbb20100110.txt,bbbb20100111.txt;文本中的内容为:(20100110收到的GG数量为121)。就是每天,每个点(aaaa、bbbb)分别会生成这么一个文件,
我想按照文件名的前缀(即地点)来统计这个【GG的数量】,
即:按照日期,将每天的【GG的数量】输出到文本或者word文档、excel文档中都可以;
输出格式【aaaa20100110收到的GG数量为121】、【aaaa20100111收到的GG数量为122】、【bbbb20100111收到的GG数量为122】 以此类推
(就是将文本中的信息输出的时候加上地点(aaaa)这个样子)
哪位大哥帮帮忙,帮小弟写个java代码 不胜感激,请尽量贴代码 本人水平有限 展开
我想按照文件名的前缀(即地点)来统计这个【GG的数量】,
即:按照日期,将每天的【GG的数量】输出到文本或者word文档、excel文档中都可以;
输出格式【aaaa20100110收到的GG数量为121】、【aaaa20100111收到的GG数量为122】、【bbbb20100111收到的GG数量为122】 以此类推
(就是将文本中的信息输出的时候加上地点(aaaa)这个样子)
哪位大哥帮帮忙,帮小弟写个java代码 不胜感激,请尽量贴代码 本人水平有限 展开
展开全部
有一些假定,每个文本文件只保存一行数据,只有两个地点,自己看看吧,文件格式不正确,自己修改吧.可以把指定目录内的所有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[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");
}
}
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[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");
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询