首页 > 代码库 > 找出文件1中有而文件2中没有的数据
找出文件1中有而文件2中没有的数据
// 使用stream方法实现 public static List<String> fileterData() throws IOException { String file1Content = new String(Files.readAllBytes(Paths.get(".\\src\\main\\resources\\File1"))); String file2Content = new String( Files.readAllBytes(Paths.get(".\\src\\main\\resources\\File2"))); // String 的 split方法有隐患,WINDOWS下换行符使用\r\n,Linux下使用的是\n List<String> file1Str = Arrays.asList(file1Content.split("\r\n")); List<String> file2Str= Arrays.asList(file2Content.split("\r\n")); // 过滤收集,遍历file1,每个都在file2中进行检查一遍,如果file2中没有的就收集起来 List<String> filtedStr = file1Str.stream().filter(t -> false == file2Str.contains(t)) .collect(Collectors.toList()); return filtedStr; }
上述是通过流的方式实现的,下面还有一种方法,通过BufferedReader,在读取文件的时候也略有差异:
// 找出file1中有但是file2中没有的数据 public static List<String> filterData() throws IOException { // TODO Auto-generated method stub String file1Path = ".\\src\\main\\resources\\File1"; String file2Path = ".\\src\\main\\resources\\File2"; BufferedReader file1br = new BufferedReader(new FileReader(file1Path)); BufferedReader file2br = new BufferedReader(new FileReader(file2Path)); String line = ""; List<String> file2String= new ArrayList<>(); while ((line = file2br.readLine()) != null) { file2String.add(line); } while ((line = file1br.readLine()) != null) { if (false == file2String.contains(line)) { System.out.println(line); } else { file2String.remove(line); } }return file2String; }
文件格式样例 File1:
String1
String2
String3
文件格式样例 File2:
String1
String2
String4
找出文件1中有而文件2中没有的数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。