java读取文件内容

2023-11-01

直接上代码,两个类:一个工具类,一个测试类

工具类代码:

package org.example.study.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Slf4j
public class FileUtil {

    public static List<List<String>> readFileContent(String filePath) {
        //String filePath = "D:\\test.del";
        FileInputStream fileInputStream;
        List<List<String>> dataList;

        try {
            fileInputStream = new FileInputStream(filePath);
            Reader reader = new InputStreamReader(fileInputStream, Charset.forName("UTF-8"));
            //Reader reader = new InputStreamReader(fileInputStream, Charset.forName("GBK"));
            BufferedReader bufferedReader = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
            List<String> list = new ArrayList<>();
            for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
                list.add(line);
            }
            dataList = list.stream().filter(StringUtils::isNotBlank).map(line -> Arrays.asList(line.split("~@~"))).collect(Collectors.toList());
            log.info("dataList.size()===={}", dataList.size());
            log.info("dataList===={}", dataList);
            for (List<String> stringList : dataList) {
                log.info("stringlist===={}", stringList);
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return dataList;
    }
}

测试类代码:

package org.example.study.util;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

class FileUtilTest {
    public static void main(String[] args) {
        List<List<String>> list = FileUtil.readFileContent("D:\\\\test.del");
        System.out.println("list.size====" + list.size());
        System.out.println("list====" + list);
    }
}

注意事项:

值得关注的是,这儿测试类中的文件  test.del  ,这儿需要说明以下文件的编码格式。

大家看我写的文件内容:

411~@~20230613~@~工作~@~1
618~@~20230613~@~娱乐~@~3
710~@~20230613~@~购物~@~1
516~@~20230613~@~吃饭~@~3

然后保存文件的时候,默认是 ANSI 格式的,也就是相当于是 GBK,这时候测试运行程序,打印的内容中就会出现中文乱码的现象。所以,要么将程序中的 UTF-8 编码改成 GBK,将文件编码格式改成 UTF-8 。文件格式改成 UTF-8 的方法:右键文件---->打开方式---->记事本---->文件---->另存为    这时候就会看到 “保存” 按钮旁边有个 “编码”,默认是 ANSI,咱们改成 UTF-8 ,然后保存即可。如下图:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java读取文件内容 的相关文章

随机推荐

  • FTP连接时出现“227 Entering Passive Mode” 的解决方法

    今天从公网的服务器连接本地内网的FTP server copy文件时 系统老是提示227 Entering Passive Mode xxx xxx xxx xxx x 很是奇怪 于是上网找资料仔细研究了一下 原来FTP有两种工作模式 PO
  • Python从入门到放弃 (一) Python3的安装 以及pip安装

    编程语言只是一个工具 能够让这个工具具有什么样的效果取决于使用这个工具的人 笔者根据自己的经验写了一下Python3的学习 让新手小白快速入门 不足之处请读者指正 一 Python入门学习介绍 任何一门编程语言都需要开发环境 有了开发环境才
  • IP地址大全之IPV4版

    首先给大家分享一个巨牛巨牛的人工智能教程 是我无意中发现的 教程不仅零基础 通俗易懂 而且非常风趣幽默 还时不时有内涵段子 像看小说一样 哈哈 我正在学习中 觉得太牛了 所以分享给大家 点这里可以跳转到教程 IP 地 址 我们平时说的IP地
  • 响应式开发一招致胜 学习视频 分享

    转载于 https www cnblogs com ios9 p 8526562 html
  • VS远程调试与附加调试

    一 发送文件到目标机器 我的程序是x64 所以拷贝这个文件夹到目标机器即可 二 配置目标机器为远程调试状态 zheg 1 双击msvsmon exe 2 配置无需密码直接可以远程 工具 gt 选项 gt 选择无身份验证 允许任何用户进行调试
  • Python numpy函数:shape用法

    shape函数是numpy core fromnumeric中的函数 它的功能是读取矩阵的长度 比如shape 0 就是读取矩阵第一维度的长度 shape的输入参数可以是一个整数 表示维度 也可以是一个矩阵 以下例子可能会好理解一些 1 参
  • Python对比两个文件夹的文件差异并导出差异

    python脚本 coding utf 8 目录对比工具 包含子目录 并列出 1 A比B多了哪些文件 2 B比A多了哪些文件 3 二者相同的文件 md5比较 import os import time import difflib impo
  • vue使用axios发送post请求携带json body参数,后端使用@RequestBody进行接收

    前言 最近在做自己项目中 做一个非常简单的新增用户场景 但是使用原生axios发送post请求的时候 还是踩了不少坑的 唉 说多了都是泪 小小一个新增业务 在自己前后端一起开发的时候 硬是搞了好久 下面就把问题总结分享下 防止后人再踩坑 接
  • Python3---numpy的详细解读,小白疯狂收藏

    前言 近日梳理python3 的numpy的相关知识点 故自我整理成笔记发布 一是供大家评论和建议 查缺补漏自我知识框架 二是可以进一步熟悉知识 达到更好的融汇贯通的情况 希望看到的兄弟姐妹可以不吝赐教 感激不尽 1 维度 一维数组 二维数
  • 文件服务器fuse,分布式文件系统glusterfs安装步骤

    我的系统是 RHEL5 可能环境不一样 需要安装的第三方依赖不一样啊 反正大家在安装的过程中缺少什么就去安装什么 一般都会有提示的 下载 glusterfs 3 2 0 tar gz 源码包 随便解压到一个目录 glusterfs 需要 f
  • Dynamics CRM 2011/2013 通过Javascript给lookup字段赋值

    仅仅做下记录 因为老是用到但老是忘记 var value new Array value 0 new Object value 0 id idValue value 0 name textValue value 0 entityType t
  • hadoop:编写jpsall脚本错误bash: 行 1: jps: 未找到命令

    jpsall脚本 集群使用jps命令查看集群运行情况 bin bash for host in hadoop102 hadoop103 hadoop104 do echo host ssh host jps done 运行jpsall报错
  • caffe中forward过程总结 2

    前面http blog csdn net buyi shizi article details 51504276 总结的是caffe有和卷积有关的forward过程 下面我们总结一下卷积之后和全连接网络Inner Product Layer
  • Linux音视频编程学习(1)

    1 linux音视频概念 声音作为一种模拟信号 需要被A D转换器转换成数字信号 才能被存储在计算机中 因此A D转换视为3步 采样 量化和编码 采样 采样器每个一段时间来读取一次模拟信号 用这些离散的值来代表整个模拟信号的过程 单位时间内
  • MES系统产品规划

    某互联网科技有限公司 MES系统规划初稿 说明书V1 0 审核 批准清单 姓名 职位 签名 日期 撰写 张先生 产品总监 批准 版本修订历史 版本 版本日期 作者 公司 版本描述 A 2021 08 14 张先生 文档初稿 提交供内部修改
  • 点云梯度下采样

    点云下采样又称点云精简 均匀网格下采样 均匀网格下采样法是建立在空间包围盒精简算法之上对散乱点云快速简化的一种算法 其基本思想为 根据点云数据的密度确定最小三维网格 体素 的边长为 a b c a b c a b c 计
  • 2022春招前端最新面试题分享(途牛旅游网)

    途牛旅游网 公司及岗位信息 公司 途牛旅游网 岗位 前端校招 地点 南京 薪资 16k 14薪 面试结果 通过 一面 2022 04 26 自我介绍 介绍一下实习做过的项目 难点 收获 体会 TCP和UDP的区别 TCP如何保持可靠 TCP
  • Java多线程中join()方法和sleep()方法的区别

    这里写目录标题 Java多线程中join 方法和sleep 方法的区别 结论 Java多线程中join 方法和sleep 方法的区别 1 先声明MyThread子类继承Thread类 public class MyThread extend
  • K近邻算法&计算距离&scikit-learn数据集获取——机器学习

    一 K近邻算法 1 什么是K近邻算法 k Nearest Neighbours KNN 简介 最近邻算法是一种分类算法 1968年由Cover和Hart提出 应用场景有字符识别 文本分类 图像识别等领域 该算法的思想 一个样本与数据集中的k
  • java读取文件内容

    直接上代码 两个类 一个工具类 一个测试类 工具类代码 package org example study util import lombok extern slf4j Slf4j import org apache commons la