文本数据展示需求:两个文本文件,不同行数,相同数据保留,差异数据输出到另一文件中
可输出为TXT、CSV、HTML格式
package text;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Text
{
public static void main(String[] args)
{
Text text = new Text();
text.read();
}
public void read()
{
String s;
BufferedReader bufferedReader1 = null;
BufferedReader bufferedReader2 = null;
try
{
//读取本地指定盘符文件
// bufferedReader1 = new BufferedReader(new InputStreamReader(new FileInputStream(new File("F:\文本1.txt"))));
// bufferedReader2 = new BufferedReader(new InputStreamReader(new FileInputStream(new File("F:\文本2.txt"))));
//读取项目中指定文件
bufferedReader1 = new BufferedReader(new InputStreamReader(new FileInputStream(new File("文本1.txt"))));
bufferedReader2 = new BufferedReader(new InputStreamReader(new FileInputStream(new File("文本2.txt"))));
ArrayList arrayList1 = new ArrayList<>();
ArrayList arrayList2 = new ArrayList<>();
StringBuffer stringBuffer = new StringBuffer("/cum/");
while ((s = bufferedReader1.readLine()) != null)
{
//第一种写法
s = s.contains(stringBuffer)? s.substring(5) : s;
arrayList1.add(s);
//第二种写法
// if (s.contains(stringBuffer))
// {
// //存储数组中
// arrayList1.add(s.substring(5));
// }
// arrayList1.add(s);
}
while ((s = bufferedReader2.readLine()) != null)
{
//存储数组中
arrayList2.add(s);
}
//过滤不同数据进行存储
List collect = arrayList2.stream().filter(s1 -> !arrayList1.contains(s1)).collect(Collectors.toList());
//输出查看是否正确
System.out.println(collect);
System.out.println("保存文件");
File outFile = new File("F:/输出文件.txt");
//设置编码格式以及大小
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile, true), "UTF-8"), 10240);
//遍历输出并进行存储
for (int i = 0; i < collect.size(); i++)
{
out.write(collect.get(i) + "rn");
}
out.flush();
out.close();
System.out.println("输出结束~~~~~");
} catch (IOException e)
{
e.printStackTrace();
} finally
{
// 释放资源
if (bufferedReader1 != null)
{
try
{
bufferedReader1.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
if (bufferedReader2 != null)
{
try
{
bufferedReader2.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
控制台输出差异,并进行存储
- 控制台展示
- 本地指定盘符查看是否输出
- 更换存储格式
测试成功!!!



