java处理txt文件

我想处理两个txt文件,一个中包含序列号+用户名,例如1E0000023,张三;1E0000024,李四等等,另个文件包含人员编号+用户名,例如00001,张三;0000... 我想处理两个txt文件,一个中包含序列号+用户名,例如1E0000023,张三;1E0000024,李四等等,另个文件包含人员编号+用户名,例如00001,张三;00002,李四,怎样将两个文件根据用户名进行匹配录入到一个新的文件,就像这样:1E0000023,00001,张三,请给出相应注释,谢谢,急用!~!~! 展开
 我来答
qyi8
2010-12-15 · TA获得超过211个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:191万
展开全部
分别读取两个文件

String[] s1 = new String[] { "1,admin", "2,manager", "3,qyi" };//假设这是第一个文件
String[] s2 = new String[] { "SN222,admin", "SN33,manager","SN0982,qyi" };//第二个文件的内容
List<String> l = new ArrayList<String>();//比较组合后的结果集
for (int i = 0; i < s1.length; i++) {//取第一文件的每一个对象与第二文件的每一个对象
String[] ss1 = s1[i].split(",");
for (int j = 0; j < s2.length; j++) {
String[] ss2 = s2[j].split(",");
if(ss2[1].equals(ss1[1])){//根据用户名进行比较,如果相同的话就进行字符串拼接,然后放到结果集当中,
l.add(ss1[0]+","+ss2[0]+","+ss1[1]);
continue;//跳出内循环
}
}
}

for(String s : l){//打印结果集(可以在这里将结果集写入到新的文件当中去)
System.out.println(s);
}
板砖有文化
2010-12-15
知道答主
回答量:52
采纳率:0%
帮助的人:20.9万
展开全部
本身就有问题,怎么能用姓名来匹配呢,同名的人很多。
你现在的问题是不知道如何匹配还是不知道技术上如何解决呢?
正常情况就是读取列个文本文件到缓存中,再缓存中进行遍历匹配,然后进行保存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
而庅没页65
推荐于2016-11-15 · TA获得超过876个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:141万
展开全部
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class WriterOrReaderTxt {
// 写文件
private void writerTxt() {
BufferedWriter fw = null;
try {
File file = new File("D://text.txt");
fw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8")); // 指定编码格式,以免读取时中文字符异常
fw.append("我写入的内容");
fw.newLine();
fw.append("我又写入的内容");
fw.flush(); // 全部写入缓存中的内容
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

// 读文件
private void readTxt() {
String filePath = WriterOrReaderTxt.class.getResource("").getPath().replace("file:", "")
+ "/test.txt"; // 文件和该类在同个目录下
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8")); // 指定读取文件的编码格式,要和写入的格式一致,以免出现中文乱码,
String str = null;
while ((str = reader.readLine()) != null) {
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2010-12-15 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Test {

public static void main(String[] args) throws IOException {

MyFileReader fl = new MyFileReader("data1.txt");
Map<String, String> map1 = fl.getFileContext();

MyFileReader f2 = new MyFileReader("data2.txt");
Map<String, String> map2 = f2.getFileContext();

Set<String> keySet1 = map1.keySet();

Iterator ite = keySet1.iterator();

while(ite.hasNext()){
String key1 = (String) ite.next();

String serial = map2.get(key1);
String outContent = map1.get(key1) + ", " + (serial == null? "": serial) + ", " + key1;

System.out.println(outContent);
}

//TODO: to write to new file
}
}

class MyFileReader{

private String file = null;

public MyFileReader(String fileName){
this.file = fileName;
}

public Map<String, String> getFileContext() throws IOException{

List<String> list = new ArrayList<String>();

FileReader fl = new FileReader(new File(file));
BufferedReader bf = new BufferedReader(fl);

String context = null;

do{
context = bf.readLine();

if(context == null || context.equals("")){
break;
}

list.add(context.replace(';', ' ').trim());

}while(context != null );

Map<String, String> map = new HashMap<String, String>();

for(String item: list){
String[] ary = item.split(",");
map.put(ary[1], ary[0]);
}

return map;
}

}
--------------
1E0000023, 00001, zhangsan
1E0000024, 00002, Lisi
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式