读取txt文件,获取文件1和文件2关联id信息

最近,项目上有一个需求,就是客户会定期发送两个文件(.txt)过来,根据文件1中id获取文件2中存在的帐号信息,即为要过滤掉的帐号:

//代码测试类
public void testTxt(){
try {
//文件1路径名称(存放在本地或者直接以流进行读取)
String name = "src//input.txt";
File file = new File(name);
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file));
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String line = "";

File outname = new File("src//output.txt");
outname.createNewFile();
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(outname));
int num = 0;
//获取字段对应的索引
Map<String,Integer> map = Maps.newHashMap();
//存放id信息
Set<String> set = Sets.newHashSet();
while((line = bufferedReader.readLine()) != null ){
//将获取内容写出
bufferedWriter.write(line+"\r\n");
//将获取内容进行拆分
String[] split = line.split(" ");
if(num == 0){
//将表头信息和索引提取出来
for (int i = 0; i < split.length ; i++) {
map.put(split[i],i);
}

}else{

for (int i = 0; i <split.length ; i++) {
//获取id所在列的索引
Integer id = map.get("id");
//获取id所在列的内容进行提取(去重)
if(id == i){
set.add(split[i]);
}
}
}
num++;

//System.out.println(set.toString());
}
//刷新和关闭相应流
bufferedWriter.flush();
bufferedWriter.close();

//获取第二个文件内容
String look = "src//look.txt";
File filelook = new File(name);
InputStreamReader isrlook = new InputStreamReader(new FileInputStream(filelook));
BufferedReader brlook = new BufferedReader(isrlook);
Set<String> setlook = Sets.newHashSet();
Map<String,Integer> maps = Maps.newHashMap();
int l = 0;
while((line = brlook.readLine()) != null ){
String[] split = line.split(" ");
//将表头信息和索引提取出来
if(l==0){
for (int i = 0; i < split.length ; i++) {
maps.put(split[i],i);
}
}else{
for (int i = 0; i <split.length ; i++) {
//获取id所在列的内容进行提取(去重)
Integer index = maps.get("id");
//获取表2中id值,当且表一id中包含该id时,将该id进行保存
if(i == index && set.contains(split[i])) {
int in = maps.get("id");
setlook.add(split[in]);
}
}
}
l++;
System.out.println(setlook.toString());
}
brlook.close();
bufferedReader.close();


}catch (Exception e){
System.out.println(e.getMessage());
System.out.println(e.getStackTrace());
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值