java文件读取去重,拼接字符串


import org.apache.commons.lang3.StringUtils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {

    /**
     * 功能:Java读取txt文件的内容 步骤:1:先获得文件句柄 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
     * 3:读取到输入流后,需要读取生成字节流 4:一行一行的输出。readline()。 备注:需要考虑的是异常情况
     *
     * @param filePath 文件路径[到达文件:如: D:\aa.txt]
     * @return 将这个文件按照每一行切割成数组存放到list中。
     */
    public static List<String> readTxtFileIntoStringArrList(String filePath) {
        List<String> list = new ArrayList<String>();
        try {
            String encoding = "utf-8";
            File file = new File(filePath);
            if (file.isFile() && file.exists()) { // 判断文件是否存在
                InputStreamReader read = new InputStreamReader(
                        new FileInputStream(file), encoding);// 考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);

                File fileOut = new File("/Users/apple/Desktop/info/pb/sheet4_out.txt");
                PrintStream ps = new PrintStream(new FileOutputStream(fileOut));
                String lineTxt = null;
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    System.out.println(lineTxt);
                    if(StringUtils.isBlank(lineTxt)){
                        continue;
                    }
                    lineTxt = "select t.id from t where t.user = '" + lineTxt+"';";
                    ps.println(lineTxt);// 往文件里写入字符串
                    list.add(lineTxt);
                }
                bufferedReader.close();
                read.close();
            } else {
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }

        return list;
    }


    public static void txtToDeduplication(String filePath) {
        try {
            File file = new File(filePath);
            // 需要处理数据的文件位置
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            Map<String, String> map = new HashMap<String, String>();
            String readLine = null;
            int i = 0;

            while ((readLine = bufferedReader.readLine()) != null) {
                // 每次读取一行数据,与 map 进行比较,如果该行数据 map 中没有,就保存到 map 集合中
                if (!map.containsValue(readLine)) {
                    map.put("key" + i, readLine);
                    i++;
                }
            }
            //输出文件
            File fileOut = new File("/Users/apple/Desktop/info/pdout/deduplication.txt");
            PrintStream ps = new PrintStream(new FileOutputStream(fileOut));

            for (int j = 0; j < map.size(); j++) {
                System.out.println(map.get("key" + j));
                ps.println(map.get("key" + j));// 往文件里写入字符串
            }
            bufferedReader.close();
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }
    }



    public static void main(String[] args) {
       // List<String> list = readTxtFileIntoStringArrList("/Users/apple/Desktop/info/pb/sheet4.txt");

        txtToDeduplication("/Users/apple/Desktop/info/pdout/pdout.txt");

      // System.out.println(list);



    }


}

 

转载于:https://my.oschina.net/u/3820782/blog/1796617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值