java nio 追加写文件_java.nio.file读写文件
摘要: 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读写文件相关推荐
- java .z文件_Java简单的读写文件
这篇随笔记录了简单的文件输入与输出,是我在学习<Java核心技术卷Ⅰ>第61页到第62页时的一些整理.只用到了极简单的方法. 文件读取 要想对文件进行读取,就需要用一个File对象构造一个 ...
- java nio 追加写文件_Java NIO在文件末尾追加数据
[java]代码库import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import ja ...
- java nio 文件_Java nio 的文件处理
一.创建一个大文件 下载文件时往往会创建一个指定大小的空文件 package com.lazy.nio; import java.io.IOException; import java.nio.Byt ...
- java高效写文件_java如何高效读写10G以上大文件
有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件 先分割成多个文件 多个线程操作多个文件,避免两个线程操作同一个文件 按行读文件并按行写入新的文件 ...
- java zip压缩 加密码_java 压缩成zip文件、解压zip文件(可设置密码)
1.情景展示 java实现将文件夹进行压缩打包的功能及在线解压功能 2.解决方案 方式一:压缩.解压zip 准备工作:slf4j-api.jar org.slf4j slf4j-api 1.7.25 ...
- java输入输出及文件_java输入输出流及文件操作
我只选择了一些代码 注意包声明和相关结构 许多类都继承了MyFile这个类 深入研究可以参考<java文件操作> 1.[代码]读取文件内容 /** *Author:Yuanhonglong ...
- java 打包下载文件_java下载打包下载文件
一:对于文件的一些操作 1.创建文件夹 private String CreateFile(String dir) { File file = new File(dir); if (!file.exi ...
- java从url下载文件_Java从URL下载文件
在这篇文章中将学习如何从java下载URL中的文件.使用java.net.URL openStream()方法从java程序中的URL下载文件.也可以使用Java NIO Channels或Java ...
- java 开发文档协作_Java 网络编程---分布式文件协同编辑器设计与实现
目录: 第一部分:Java网络编程知识 (一)简单的Http请求 一般浏览网页时,使用的时Ip地址,而IP(Internet Protocol,互联网协议)目前主要是IPv4和IPv6. IP地址是一 ...
- java http 下载网页代码_Java下http下载文件客户端和上传文件客户端实例代码
Java下http下载文件客户端和上传文件客户端实例代码 发布于 2021-1-14| 复制链接 摘记: 一.下载客户端代码 ```java package javadownload; import ...
最新文章
- 图像处理库(fbc_cv):源自OpenCV代码提取
- 【Android工具】更新安卓手机传感器信息获取工具Ampere Castro phyphox,轻松获取硬件数据和状态信息...
- [云炬python3玩转机器学习笔记] 3-7Numpy中的矩阵运算
- Js组件layer的使用
- PDFlib免费下载地址及详细介绍手册
- linux创建环境变量有什么用,环境变量和shell变量到底有什么区别呢?
- Redis常用数据类型介绍、使用场景及其操作命令
- 最好用的10款手机库存管理软件,我来教你怎么选
- 禅道类似软件_推荐几款不错的项目管理软件
- 跨平台开发实践之Flutter
- 熊猫入金讲为什么seo没效果
- 基于Spring Boot的人力资源管理系统
- 手机ram内存测试软件,RAMTester(内存检测工具)
- hdfs datanode 清除回收站的命令
- eclipse32位和64位的区别
- 如何在 Java 中实现最小生成树算法
- 网络安全-网站后台的寻找+网页JS文件信息收集
- meta20 无法安装 google play_安卓万能安装谷歌三件套的方法
- 生成字体图标及其原理
- android 软键盘的从属关系,Android控件属性大全
热门文章
- 剑指_3.1数组中重复的数字(Python/C++)
- 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
- 流文件 服务器无响应,文件服务器配置程序未响应
- 查看linux系统端口占用情况
- pcie转sata3硬盘不启动_新品推荐:PCIe2.0转4口SATA3/6G扩展卡 SFF8087
- Android按钮圆角样式和边框波浪线样式
- maria安装包mysql_Redhat 7.3安装系统自带Mariadb安装包
- 计算机主页为什么打不开怎么办,主页被限制,打不开怎么办?
- Shell脚本里的双冒号是什么意思
- Mycat的使用 - 03.全局序列号