摘要: Files.lines, Files.readAllLines, Files.write, Paths.get , stream, Files.exists, Files.delete, StandardOpenOption

Files.lines

Files.lines返回stream,stream可以进一步collect收集为List,Map,Set,String,文件的每一行是一个元素。

Files.lines收集为String

public static String readString() {

String res = null;

try {

res = Files.lines(Paths.get("./etc/batchNoFile.txt")).collect(Collectors.joining());

} catch (Exception e) {

e.printStackTrace();

}

return res;

}

Files.lines收集为List,返回类型是java.util.ArrayList。

public static List readList() {

List res = null;

try {

res = Files.lines(Paths.get("./etc/batchNoFile.txt")).collect(Collectors.toList());

} catch (Exception e) {

e.printStackTrace();

}

return res;

}

Files.lines收集为Map,返回类型是java.util.HashMap。

public static Map readMap() {

Map res = null;

try {

res = Files.lines(Paths.get("./etc/batchNoFile.txt")).collect(Collectors.toMap(k -> k.split(",")[0], v -> v.split(",")[1], (o, n) -> n));

} catch (Exception e) {

e.printStackTrace();

}

return res;

}

还有其他写法,通过forEach遍历实现

public static Map readMap2() {

try {

Map res = new HashMap<>();

Files.lines(Paths.get("./etc/batchNoFile.txt")).forEach(

x -> {

String[] pair = x.split(",");

res.put(pair[0], pair[1]);

}

);

return res;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

forEach实现每一行元素计数。

public static Map readMap3() {

try {

Map res = new HashMap<>();

Files.lines(Paths.get("./etc/batchNoFile.txt")).forEach(

x -> {

res.put(x, res.getOrDefault(x, 0) + 1);

}

);

return res;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

也可以直接收集实现

public static Map readMap4() {

Map res = null;

try {

// 如果使用++,是++o,++o先+1再赋值,o++先赋值再+1,结果全是1

res = Files.lines(Paths.get("./etc/batchNoFile.txt")).collect(Collectors.toMap(k -> k, v -> 1, (o, n) -> o + 1));

} catch (Exception e) {

e.printStackTrace();

}

return res;

}

Files.lines收集为Set,返回类型是java.util.HashSet。

public static Set readSet() {

Set res = null;

try{

res = Files.lines(Paths.get("./etc/batchNoFile.txt")).collect(Collectors.toSet());

} catch (Exception e) {

e.printStackTrace();

}

return res;

}

Files.readAllLines

Files.readAllLines返回java.util.ArrayList,每一行是一个元素。

public static List readList2() {

List res = null;

try {

res = Files.readAllLines(Paths.get("./etc/batchNoFile.txt"));

} catch (Exception e) {

LOGGER.error("读取批次数据出错", e);

}

return res;

}

Files.write

主要实现覆盖写入,追加且换行写入,直接写入集合。

覆盖写入

简单的写入一条数据。

public static void writeBatchNo(String batchNo) {

try {

Files.write(Paths.get(Config.getString("batchno.file")), batchNo.getBytes(StandardCharsets.UTF_8));

} catch (Exception e) {

LOGGER.error("写入批次数据出错", e);

}

}

覆盖追加写入

覆盖原文件,追加写入多条数据,如果不先删除会直接在原文件上追加。

public static void writeMap(Map data) {

try {

Path path = Paths.get("./etc/batchNoFile.txt");

// 如果存在先删除

if (Files.exists(path)) {

Files.delete(path);

}

for (Map.Entry entry : data.entrySet()) {

String line = String.format("%s,%s\n", entry.getKey(), entry.getValue());

Files.write(Paths.get("./etc/batchNoFile.txt"), line.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND);

}

} catch (Exception e) {

e.printStackTrace();

}

}

直接写入集合

直接写入List,Set集合,每个元素自动换行。

public static void writeList(Collection data) {

try {

Path path = Paths.get("./etc/batchNoFile.txt");

// 如果存在先删除

if (Files.exists(path)) {

Files.delete(path);

}

Files.write(path, data, StandardCharsets.UTF_8,

StandardOpenOption.CREATE, StandardOpenOption.APPEND);

} catch (Exception e) {

e.printStackTrace();

}

}

java nio 追加写文件_java.nio.file读写文件相关推荐

  1. java .z文件_Java简单的读写文件

    这篇随笔记录了简单的文件输入与输出,是我在学习<Java核心技术卷Ⅰ>第61页到第62页时的一些整理.只用到了极简单的方法. 文件读取 要想对文件进行读取,就需要用一个File对象构造一个 ...

  2. java nio 追加写文件_Java NIO在文件末尾追加数据

    [java]代码库import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import ja ...

  3. java nio 文件_Java nio 的文件处理

    一.创建一个大文件 下载文件时往往会创建一个指定大小的空文件 package com.lazy.nio; import java.io.IOException; import java.nio.Byt ...

  4. java高效写文件_java如何高效读写10G以上大文件

    有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件 先分割成多个文件 多个线程操作多个文件,避免两个线程操作同一个文件 按行读文件并按行写入新的文件 ...

  5. java zip压缩 加密码_java 压缩成zip文件、解压zip文件(可设置密码)

    1.情景展示 java实现将文件夹进行压缩打包的功能及在线解压功能 2.解决方案 方式一:压缩.解压zip 准备工作:slf4j-api.jar org.slf4j slf4j-api 1.7.25 ...

  6. java输入输出及文件_java输入输出流及文件操作

    我只选择了一些代码 注意包声明和相关结构 许多类都继承了MyFile这个类 深入研究可以参考<java文件操作> 1.[代码]读取文件内容 /** *Author:Yuanhonglong ...

  7. java 打包下载文件_java下载打包下载文件

    一:对于文件的一些操作 1.创建文件夹 private String CreateFile(String dir) { File file = new File(dir); if (!file.exi ...

  8. java从url下载文件_Java从URL下载文件

    在这篇文章中将学习如何从java下载URL中的文件.使用java.net.URL openStream()方法从java程序中的URL下载文件.也可以使用Java NIO Channels或Java ...

  9. java 开发文档协作_Java 网络编程---分布式文件协同编辑器设计与实现

    目录: 第一部分:Java网络编程知识 (一)简单的Http请求 一般浏览网页时,使用的时Ip地址,而IP(Internet Protocol,互联网协议)目前主要是IPv4和IPv6. IP地址是一 ...

  10. java http 下载网页代码_Java下http下载文件客户端和上传文件客户端实例代码

    Java下http下载文件客户端和上传文件客户端实例代码 发布于 2021-1-14| 复制链接 摘记: 一.下载客户端代码 ```java package javadownload; import ...

最新文章

  1. 图像处理库(fbc_cv):源自OpenCV代码提取
  2. 【Android工具】更新安卓手机传感器信息获取工具Ampere Castro phyphox,轻松获取硬件数据和状态信息...
  3. [云炬python3玩转机器学习笔记] 3-7Numpy中的矩阵运算
  4. Js组件layer的使用
  5. PDFlib免费下载地址及详细介绍手册
  6. linux创建环境变量有什么用,环境变量和shell变量到底有什么区别呢?
  7. Redis常用数据类型介绍、使用场景及其操作命令
  8. 最好用的10款手机库存管理软件,我来教你怎么选
  9. 禅道类似软件_推荐几款不错的项目管理软件
  10. 跨平台开发实践之Flutter
  11. 熊猫入金讲为什么seo没效果
  12. 基于Spring Boot的人力资源管理系统
  13. 手机ram内存测试软件,RAMTester(内存检测工具)
  14. hdfs datanode 清除回收站的命令
  15. eclipse32位和64位的区别
  16. 如何在 Java 中实现最小生成树算法
  17. 网络安全-网站后台的寻找+网页JS文件信息收集
  18. meta20 无法安装 google play_安卓万能安装谷歌三件套的方法
  19. 生成字体图标及其原理
  20. android 软键盘的从属关系,Android控件属性大全

热门文章

  1. 剑指_3.1数组中重复的数字(Python/C++)
  2. 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
  3. 流文件 服务器无响应,文件服务器配置程序未响应
  4. 查看linux系统端口占用情况
  5. pcie转sata3硬盘不启动_新品推荐:PCIe2.0转4口SATA3/6G扩展卡 SFF8087
  6. Android按钮圆角样式和边框波浪线样式
  7. maria安装包mysql_Redhat 7.3安装系统自带Mariadb安装包
  8. 计算机主页为什么打不开怎么办,主页被限制,打不开怎么办?
  9. Shell脚本里的双冒号是什么意思
  10. Mycat的使用 - 03.全局序列号