Guava: Files 文件工具类

接口方法说明

方法名称方法描述
append(CharSequence from, File to, Charset charset) 已过时。使用 asCharSink(to, charset, FileWriteMode.APPEND).write(from),计划于2019年1月删除.
asByteSink(File file, FileWriteMode... modes) 返回一个新的ByteSink,用于将字节写入给定文件.
asByteSource(File file) 返回一个新的ByteSource,用于从给定文件中读取字节.
asCharSink(File file, Charset charset, FileWriteMode... modes) 返回一个新的CharSink,用于使用给定的字符集将字符数据写入给定文件.
asCharSource(File file, Charset charset) 返回一个新的CharSource,用于使用给定的字符集从给定文件中读取字符数据.
copy(File from, Charset charset, Appendable to) 已过时。使用 asCharSource(from, charset).copyTo(to). 计划于2019年1月删除.
copy(File from, File to) 将所有字节从一个文件复制到另一个文件.
copy(File from, OutputStream to) 将文件中的所有字节复制到输出流.
createParentDirs(File file) 需要注意的,如果最终创建失败,不能保证的是没有任何文件夹创建,也许在他的父目录路径上已经有某些文件夹被创建了.
createTempDir() 自动在系统的临时文件目录下创建一个新的目录,并返回他的名字。
equal(File file1, File file2) 比较两个文件中是否包含相等的字节数,如果相等返回true,否则返回false.
fileTraverser() 返回文件和目录树的Traverser实例.
getFileExtension(String fullName) 返回一个文件名的扩展名,如果一个文件没有扩展名,他将会返回一个空字符串.
getNameWithoutExtension(String file) 返回没有文件扩展名或路径的文件名.
hash(File file, HashFunction hashFunction) 已过时。使用 asByteSource(file).hash(hashFunction). 计划于2019年1月删除.
isDirectory() 返回一个predicate,内容是 File.isDirectory().
isFile() 返回一个 predicate,内容是 File.isFile().
map(File file) 把可读的文件Map到内存里,根据FileChannel.map将文件以只读方式完全映射到内存 FileChannel.map(java.nio.channels.FileChannel.MapMode, long, long).
map(File file, FileChannel.MapMode mode) 把文件使用规定的方式完全映射到内存中。使用 FileChannel.MapMode,根据FileChannel.map(java.nio.channels.FileChannel.MapMode, long, long)将文件完全映射到内存。
map(File file, FileChannel.MapMode mode, long size) 该方法和上面两个是一样的,只不过这个添加了一个size,意思是每次要Map到内存的大小,这个和上面的比较是这个可以正常使用.
newReader(File file, Charset charset) 该方法使用提供的编码方式把输入文件做成一个BufferedReader对象,并返回。
newWriter(File file, Charset charset) 该方法是和上边的类似功能。.
readBytes(File file, ByteProcessor<T> processor) 已过时。使用 asByteSource(file).read(processor). 计划于2019年1月删除.
readFirstLine(File file, Charset charset) 已过时。使用 asCharSource(file, charset).readFirstLine(). 计划于2019年1月删除.
readLines(File file, Charset charset) 从文件中读取所有行。
readLines(File file, Charset charset, LineProcessor<T> callback) 已过时。使用 asCharSource(file, charset).readLines(callback). 计划于2019年1月删除.
simplifyPath(String pathname) 该方法是将提供的目录路径简化,具体的就是空的字符串变成“.”,然后“.”依然保留,将“./”折叠起来,“../”不一定折叠起来,可能会,删除多余的“/”,而且会删除尾部的“/”。.
toByteArray(File file) 将一个文件直接转化成一个字节数组,并返回。
toString(File file, Charset charset) 已过时。使用 asCharSource(file, charset).read(). 计划于2019年1月删除.
touch(File file) 创建一个空的文件或者使用和unix相同命令的方式更新文件的最后更新时间戳.
write(byte[] from, File to) 将一个字节数组里的数据全部写入到文件to里边.
write(CharSequence from, File to, Charset charset) 已过时。使用 asCharSink(to, charset).write(from). 计划于2019年1月删除.

使用Demo

import com.google.common.base.Charsets;
import com.google.common.base.Joiner;
import com.google.common.hash.HashCode;
import com.google.common.hash.Hashing;
import com.google.common.io.FileWriteMode;
import com.google.common.io.Files;
import org.junit.Test;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class FilesTest {private String SOURCE_PATH = "D:\\Users\\ex_luosz5\\Desktop\\test.txt";/*** 文件拷贝*/@Testpublic void copy() throws Exception {Files.copy(new File("from file path"), new File("to file path"));}/*** 文件移动*/@Testpublic void move() throws Exception {Files.move(new File("from file path"), new File("to file path"));}/*** 文件逐行读取*/@Testpublic void readLines() throws Exception {File file = new File(SOURCE_PATH);List<String> lines = Files.readLines(file, Charsets.UTF_8);String result = Joiner.on("\n").join(lines);System.out.println("读取内容:" + result);}/*** 文件整体读取*/@Testpublic void asCharSource() throws Exception {
//        String result = Files.asCharSource(new File(SOURCE_PATH), Charsets.UTF_8).readFirstLine();    // 第一行String result = Files.asCharSource(new File(SOURCE_PATH), Charsets.UTF_8).read();System.out.println("读取内容:" + result);}/*** 文件 hash 值* <p>* 在文件对比时候,可以看两个文件等hashCode 是否相等,比如拷贝文件后是否有损*/@Testpublic void asByteSource() throws Exception {HashCode hashCode = Files.asByteSource(new File(SOURCE_PATH)).hash(Hashing.sha256());HashCode hashCode2 = Files.asByteSource(new File(SOURCE_PATH)).hash(Hashing.sha256());System.out.println(hashCode.equals(hashCode2));System.out.println(hashCode);}/*** 文件书写*/@Testpublic void write() throws Exception {Files.asCharSink(new File(SOURCE_PATH), Charsets.UTF_8).write("覆盖 内容");Files.asCharSink(new File(SOURCE_PATH), Charsets.UTF_8, FileWriteMode.APPEND).write("\n\n追加 内容");}/*** 创建空文件*/@Testpublic void test7() throws Exception {Files.touch(new File("D:\\Users\\ex_luosz5\\Desktop\\testnull.txt"));}/*** 递归文件*/@Testpublic void test8() throws Exception {String path = "/Users/lasse/Desktop";List<File> list = new ArrayList<>();this.recursiveList(new File(path), list);list.forEach(System.out::println);}private void recursiveList(File root, List<File> fileList) {if (root.isHidden()) return;if (root.isFile()) {fileList.add(root);} else {File[] files = root.listFiles();for (File f : files) {recursiveList(f, fileList);}}}/*** 递归文件** breadthFirst 为【广度优先遍历】* depthFirstPreOrder 和 depthFirstPostOrder 为【深度优先遍历】** 广度优先、深度优先 参考文章:https://www.jishux.com/p/7dbaf8611d052037* */@Testpublic void test9() throws Exception {String path = "D:\\Users\\ex_luosz5\\Desktop\\噪音";Iterable<File> files = Files.fileTraverser().breadthFirst(new File(path));files.forEach(System.out::println);System.out.println("-------------------截断-----------------------------");// 第一次访问到节点的顺序(Pre-order)Iterable<File> depthFirstPreOrderFiles = Files.fileTraverser().depthFirstPreOrder(new File(path));files.forEach(System.out::println);System.out.println("-------------------截断-----------------------------");// 访问到最后,然后回退访问节点的顺序(Post-order)Iterable<File> depthFirstPostOrderFiles = Files.fileTraverser().depthFirstPostOrder(new File(path));files.forEach(System.out::println);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring 篇】基于XML的Spring事务控制详解

Spring框架作为Java开发中的瑞士军刀&#xff0c;提供了许多方便而强大的功能&#xff0c;其中之一就是事务管理。事务是数据库操作中的关键概念&#xff0c;它确保一系列操作要么全部成功&#xff0c;要么全部失败。今天我们将深入探讨基于XML配置的Spring事务控制&#xff0c…

STM32 SPI通信协议1——协议基本原理及管脚定义

SPI介绍 SPI全称为Serial Peripheral interface&#xff0c;译为串行外围设备接口。SPI主要应用在EEPROM&#xff0c;FLASH&#xff0c;实时时钟&#xff0c;AD转换器&#xff0c;还有数字信号处理器和数字信号编码器之间。 SPI是一种高速&#xff0c;全双工&#xff0c;同…

PHP面试小结(20240108)

PHP 部分 1. php的包管理工具是如何实现自动加载的 换句话问&#xff1a;composer 实现原理是什么&#xff1f;spl_autoload_register() 首先&#xff0c;Composer 是 PHP 的一个包管理和包依赖管理的工具 &#xff0c; 打开安装之后生成的 "vendor" 文件, 里面有个…

使用C++播放声音的完整指南

1. 准备工作&#xff1a; 首先&#xff0c;我们需要选择一个合适的音频库。在C中&#xff0c;常用的音频库有OpenAL、SDL和SFML等。这里我们选择使用SFML库&#xff0c;因为它易于使用且跨平台性好。 2. 安装SFML库&#xff1a; 在开始之前&#xff0c;请确保已经安装了SFML库…

数据库系统概念 第七版 中文答案 第3章 SQL介绍

3.1 将以下查询使用SQL语言编写&#xff0c;使用大学数据库模式。 &#xff08;我们建议您实际在数据库上运行这些查询&#xff0c;使用我们在书籍网站db-book.com上提供的示例数据。有关设置数据库和加载示例数据的说明&#xff0c;请参阅上述网站。&#xff09; a. 查找计算机…

【pwn】cmcc_simplerop --rop链的构造

程序保护情况检查 32位程序&#xff0c;堆栈不可执行 主函数&#xff1a; 左边又是一堆函数&#xff0c;file看一下 发现是静态链接&#xff0c;那ret2libc不用考虑了&#xff0c;接着看一下有没有int 80 那可以考虑利用rop链调用execve函数&#xff0c;用系统调用的函数参数是…

弹性布局(Flex)

目录 1、概述 2、基本概念 3、布局方向 4、布局换行 5、主轴对齐方式 6、交叉轴对齐方式 6.1、容器组件设置交叉轴对齐 6.2、子组件设置交叉轴对齐 7、内容对齐 8、自适应拉伸 9、相关实例 1、概述 弹性布局&#xff08;Flex&#xff09;提供更加有效的方式对容器中…

《GreenPlum系列》GreenPlum初级教程-03GreenPlum系统管理

文章目录 第三章 GreenPlum系统管理1.关于GreenPlum数据库发布版本号2.启动和停止GreenPlum数据库2.1 启动数据库2.2 重启数据库2.3 仅重新载入配置文件更改2.4 停止GreenPlum数据库2.5 停止客户端进程 3.GreenPlum数据库状态查询4.访问GreenPlum数据库4.1 数据库会话参数4.2 支…

C++力扣题目106,105--中序和后序,前序和中序遍历构造二叉树

106.从中序与后序遍历序列构造二叉树 力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&am…

Gateway反向代理配置

前言 一般而言&#xff0c;反向代理都是在Nginx中来实现的&#xff0c;其实Gateway也可以作为反向代理服务&#xff0c;不过一般不会这么做&#xff0c;只不过最近的项目&#xff0c;在通过Nginx反向代理之后&#xff0c;iPhone手机访问接口代理地址会异常&#xff0c;安卓手机…

【服务器】服务器管理 - cockpit开启

开启cockpit #!/bin/bashsed -i s/is():where()/is(*):where(*)/ /usr/share/cockpit/static/login.jssystemctl enable --now cockpit.socket #开启cockpit服务systemctl start cockpit.socket 登录 https://ip:9090

MFC 记录字段交换(RFX)学习

MFC ODBC 数据库类可自动移动数据源与记录集对象之间的数据。 从 CRecordset 派生类且不使用批量取行时,数据将通过记录字段交换 (RFX) 机制进行传输。 如果已在派生的 CRecordset 类中实现批量取行,则此框架将使用批量记录字段交换(批量 RFX)机制来传输数据。 RFX 类似于…

jQuery文字洗牌动效

html代码 效果展示 jQuery文本洗牌效果插件 <div class"container"><p class"lead">文本洗牌动画特效</p><h1 id"basic">A time to seek,</h1><h1 id"custom">and a time to lose;</h1> &…

Unity Shader 开发入门3 —— 坐标空间变换

文章目录 一、变换矩阵1.1 齐次坐标1.2 平移矩阵1.3 旋转矩阵1.4 缩放矩阵1.5 复合变换 二、世界空间变换三、观察空间变换四、裁剪空间变换4.1 视椎体4.2 齐次裁剪空间4.3 视椎体投影方式 五、屏幕空间变换 ​ 在 Shader 开发中存在不同的坐标空间&#xff0c;包括&#xff1a…

Open3D 截取感兴趣的点云部分

import time import open3d as o3d; import numpy as np; import matplotlib.pyplot as plt from scipy.signal import find_peaks#坐标 mesh_coord_frame o3d.geometry.TriangleMesh.create_coordinate_frame(size355, origin[0, 0, 0]) #mesh_coord_frame mesh_coord_frame…

云服务器十大服务商——云服务器哪家好用

云服务器哪家便宜&#xff1f;2024最新整理你要的都在这&#xff01;头部云厂商阿里云、腾讯云、华为云、京东云、UCloud等都在降价&#xff0c;阿腾云atengyun.com分享2024年云服务器租用价格给你惊喜&#xff01; 便宜云服务器阿里云腾讯云华为云 2024年便宜云服务器汇总&…

性能测试分析案例-定位服务吞吐量下降

环境准备 预先安装 docker、curl、wrk、perf、FlameGraph 等工具 sudo yum groupinstall Development Tools # 安装火焰图工具 git clone https://github.com/brendangregg/FlameGraph # 安装wrk git clone https://github.com/wg/wrk cd wrk && make && sud…

Oracle导入导出dump

创建目录&#xff1a; create directory *** as /bak; #***名称可以随便命名 需要手工创建/bak,并且此目录oracle用户有读取&#xff0c;目录地址空间要够用。 查看所有目录 select * from DBA_DIRECTORIES;---查询导入导出的目录 导入 impdp ****/**** direc…

【C语言】一.数据的存储(整数浮点数在内存中的存储||大小端||原码反码补码)

0x00. 引言 相比其他的博客&#xff0c;本博客就主打一个简单干练&#xff0c;精华萃取。话不多说&#xff0c;直接开搞 0x01. 整数在内存中的存储 我们先来看一个例子 int a10; long long b20;这里定义了两个变量a和b&#xff0c;从右向左看10赋值给变量a&#xff0c;a的类…

创建了使用说明书之后,怎样才能监测用户的行为和反馈?

在当今数字化的时代&#xff0c;了解用户的行为和反馈对于产品和服务的质量提升至关重要。对于使用说明书而言&#xff0c;仅仅创建出来是远远不够的&#xff0c;还需要持续地监测用户的行为和反馈&#xff0c;以便不断优化和改进。那怎样才能有效地监测用户的行为和反馈呢&…