CSDN开始的一天(记录一次txt文件处理)

当时做一个平台的项目,由于实现的功能需要和第三方交互,数据的传输使用.csv文件形式,读取的时候按照txt文本逐行读取,项目在运行了大概有2个月的时候一切正常,有一天平台的用户取消了重新使用此功能,产生的数据文件头有特殊字符
,原因是Java在读文件时没能正确处理UTF-8文件的BOM编码,将前3个字节当作文本内容来处理了
具体处理方法:
“` java
public class TXTUtil {
/**
*
* 以行为单位读取文件,常用于读面向行的格式化文件
*
*/

public static List<String[]> readFileByLines(String fileName) {
    BufferedReader reader = null;
    List<String[]> list = new ArrayList<>();
    try {

        /*reader=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8"));*/
        reader=new BufferedReader(new InputStreamReader(new BOMInputStream(new FileInputStream(fileName)),"UTF-8"));
        String tempString = null;
        // 一次读入一行,直到读入null为文件结束
        while ((tempString = reader.readLine()) != null) {
            // 显示行号

            if (tempString.startsWith("\uFEFF")){
                tempString = tempString.replace("\uFEFF","");
            }

            list.add(tempString.split(","));
        }
        reader.close();
        return list;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e1) {
            }
        }
    }
    return list;
}

BOMInputStream:可对BOM头进行捕捉和过滤

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值