当前位置: 首页 >Java技术 > Java 8 文件操作(转)

Java 8 文件操作(转)

我们知道在JDK6甚至之前的时候,我们想要读取一个文本文件也是非常麻烦的一件事,而现在他们都变得简单了, 这要归功于NIO2,我们先看看之前的做法:

读取一个文本文件

BufferedReader br = null;try {new BufferedReader(new FileReader("file.txt"));StringBuilder sb = new StringBuilder();String line  = br.readLine();while (line != null) {sb.append(line);sb.append(System.lineSeparator());line = br.readLine();}String everything = sb.toString();} catch (Exception e){e.printStackTrace();} finally {try {br.close();} catch (IOException e) {e.printStackTrace();}}

大家对这样的一段代码一定不陌生,但这样太繁琐了,我只想读取一个文本文件,要写这么多代码还要 处理让人头大的一堆异常,怪不得别人吐槽Java臃肿,是在下输了。。。

下面我要介绍在JDK7中是如何改善这些问题的。

Path

Path用于来表示文件路径和文件,和File对象类似,Path对象并不一定要对应一个实际存在的文件, 它只是一个路径的抽象序列。

创建一个Path对象有多种方法,首先是final类Paths的两个static方法,如何从一个路径字符串来构造Path对象:

Path path1= Paths.get("/home/biezhi", "a.txt");Path path2= Paths.get("/home/biezhi/a.txt");URI  u= URI.create("file:////home/biezhi/a.txt");Path pathURI = Paths.get(u);

通过FileSystems构造

Path filePath = FileSystems.getDefault().getPath("/home/biezhi", "a.txt");

Path、URI、File之间的转换

File file  = new File("/home/biezhi/a.txt");Path p1= file.toPath();p1.toFile();file.toURI();

读写文件

你可以使用Files类快速实现文件操作,例如读取文件内容:

byte[] data= Files.readAllBytes(Paths.get("/home/biezhi/a.txt"));String content = new String(data, StandardCharsets.UTF_8);

如果希望按照行读取文件,可以调用

List<String> lines = Files.readAllLines(Paths.get("/home/biezhi/a.txt"));

反之你想将字符串写入到文件可以调用

Files.write(Paths.get("/home/biezhi/b.txt"), "Hello JDK7!".getBytes());

你也可以按照行写入文件,Files.write方法的参数中支持传递一个实现Iterable接口的类实例。 将内容追加到指定文件可以使用write方法的第三个参数OpenOption:

Files.write(Paths.get("/home/biezhi/b.txt"), "Hello JDK7!".getBytes(), StandardOpenOption.APPEND);

默认情况Files类中的所有方法都会使用UTF-8编码进行操作,当你不愿意这么干的时候可以传递Charset参数进去变更

当然Files还有一些其他的常用方法:

InputStream ins = Files.newInputStream(path);OutputStream ops = Files.newOutputStream(path);Reader reader = Files.newBufferedReader(path);Writer writer = Files.newBufferedWriter(path);

创建、移动、删除

创建文件、目录

if (!Files.exists(path)) {Files.createFile(path);Files.createDirectory(path);}

Files还提供了一些方法让我们创建临时文件/临时目录:

Files.createTempFile(dir, prefix, suffix);Files.createTempFile(prefix, suffix);Files.createTempDirectory(dir, prefix);Files.createTempDirectory(prefix);

这里的dir是一个Path对象,并且字符串prefix和suffix都可能为null。 例如调用Files.createTempFile(null, “.txt”)会返回一个类似/tmp/21238719283331124678.txt

读取一个目录下的文件请使用Files.listFiles.walk方法

复制、移动一个文件内容到某个路径

Files.copy(in, path);Files.move(path, path);

删除一个文件

Files.delete(path);

作者:夏威夷8080
来源链接:https://www.cnblogs.com/shamo89/p/8422969.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/112924.html

分享给朋友:

“Java 8 文件操作(转)” 的相关文章

Mybatis分页插件PageHelper的使用 2022年05月15日 21:54:34
Redis集群搭建 2022年05月15日 21:59:25
常用锁原理的介绍(上) 2022年05月16日 18:33:06
SpringBoot 如何统一后端返回格式 2022年05月16日 18:59:41
一文搞懂“网络协议” 2022年05月16日 20:33:35
Java实现阶乘运算 2022年05月21日 11:37:18