提交 4ebd19e0 编写于 作者: W wizardforcel

2020-05-21 22:54:45

上级 46bcf382
......@@ -4,7 +4,7 @@
学习将 Java 8 API 与`Files.list()``DirectoryStream`一起使用,以递归方式列出目录中存在的所有文件,包括隐藏文件。
## 1\. 使用 Files.list()列出所有文件和子目录
## 1\. 使用`Files.list()`列出所有文件和子目录
`Files.list()`方法列出当前目录中的**所有文件名和子目录**
......@@ -40,7 +40,7 @@ Files.list(Paths.get("."))
要列出其他目录中的文件,我们可以将`"."`替换为所需目录的完整路径。
## 3\. 使用 Files.newDirectoryStream()列出文件和子目录
## 3\. 使用`Files.newDirectoryStream()`列出文件和子目录
Java 提供了一种更灵活的使用`Files.newDirectoryStream()`遍历目录内容的方式。
......@@ -59,7 +59,7 @@ Files.newDirectoryStream(Paths.get("."))
```
## 4\. 仅列出具有 Files.newDirectoryStream()的文件
## 4\. 使用`Files.newDirectoryStream()`仅列出文件
要仅列出文件并从流中排除所有目录,请使用路径过滤器作为第二个参数。
......@@ -75,7 +75,7 @@ Output:
```
## 5\. 使用 Files.newDirectoryStream()列出一定范围的文件
## 5\. 使用`Files.newDirectoryStream()`列出一定范围的文件
您可以更改在第二个参数中传递的路径过滤器表达式,以仅获取具有特定扩展名的文件。
......@@ -109,5 +109,6 @@ final​ ​File​​[]​ files = ​new​ ​File​(​"."​).listFiles(
参考文献:
[DirectoryStream](https://docs.oracle.com/javase/8/docs/api/java/nio/file/DirectoryStream.html)
[Files.list()方法](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#list-java.nio.file.Path-)
\ No newline at end of file
[`DirectoryStream`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/DirectoryStream.html)
[`Files.list()`方法](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#list-java.nio.file.Path-)
\ No newline at end of file
......@@ -36,7 +36,7 @@ in mind.
## 2\. Java 8 读取文件 – 过滤行流
在此示例中,我们将文件内容读取为行流 as。 然后,我们将过滤掉所有带有单词`"password"`的行。
在此示例中,我们将文件内容读取为行流。 然后,我们将过滤掉所有带有单词`"password"`的行。
```java
Path filePath = Paths.get("c:/temp", "data.txt");
......@@ -67,7 +67,7 @@ password
我们将读取给定文件的内容,并检查是否有任何一行包含单词`"password"`,然后将其打印出来。
## 3\. Java 7 – 使用 FileReader 读取文件
## 3\. Java 7 – 使用`FileReader`读取文件
到 Java 7 为止,我们可以通过[`FileReader`](https://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html)以各种方式读取文件。
......
......@@ -4,9 +4,9 @@
Java 8 示例将内容导入文件。 您可以在链接的博客文章中找到使用 Java 8 API 读取文件的[示例。](//howtodoinjava.com/java8/read-file-line-by-line-in-java-8-streams-of-lines-example/)
## 1\. Java 8 使用 BufferedWriter 写入文件
## 1\. Java 8 使用`BufferedWriter`写入文件
[BufferedWriter](https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html) 用于将文本写入字符或字节流。 在打印字符之前,它将字符存储在缓冲区中并成束打印。 如果不进行缓冲,则每次调用 print()方法都会导致将字符转换为字节,然后将这些字节立即写入文件中,这可能会非常低效。
[`BufferedWriter`](https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html)用于将文本写入字符或字节流。 在打印字符之前,它将字符存储在缓冲区中并成束打印。 如果不进行缓冲,则每次调用`print()`方法都会导致将字符转换为字节,然后将这些字节立即写入文件中,这可能会非常低效。
Java 程序*使用 Java 8* API 将内容写入文件:
......@@ -22,9 +22,9 @@ try (BufferedWriter writer = Files.newBufferedWriter(path))
```
## 2\. 使用 Files.write()写入文件
## 2\. 使用`Files.write()`写入文件
使用 [Files.write()](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write-java.nio.file.Path-byte:A-java.nio.file.OpenOption...-)方法也是非常干净的代码。
使用[`Files.write()`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write-java.nio.file.Path-byte:A-java.nio.file.OpenOption...-)方法也是非常干净的代码。
```java
String content = "Hello World !!";
......
......@@ -4,7 +4,7 @@
在此示例中,我们将学习使用 Java 8 `WatchService` API 观察目录及其中的所有子目录和文件。
## 如何注册 Java 8 WatchService
## 如何注册 Java 8 `WatchService`
要注册`WatchService`,请获取目录路径并使用`path.register()`方法。
......@@ -33,11 +33,11 @@ while (true) {
该密钥一直有效,直到:
* 通过调用其 cancel 方法显式地取消它,或者
* 通过调用其`cancel`方法显式地取消它,或者
* 隐式取消,因为该对象不再可访问,或者
* 通过关闭手表服务。
* 通过关闭观察服务。
如果您要重复使用同一键在一个循环中多次获取更改事件,请不要忘记调用`watchKey.reset()`方法,该方法会将键再次设置为**处于**状态。
如果您要重复使用同一键在一个循环中多次获取更改事件,请不要忘记调用`watchKey.reset()`方法,该方法会将键再次设置为**就绪**状态。
> 请注意,诸如如何检测事件,其及时性以及是否保留其顺序之类的几件事高度依赖于底层操作系统。 某些更改可能导致一个操作系统中的单个条目,而类似的更改可能导致另一操作系统中的多个事件。
......@@ -72,7 +72,7 @@ private void walkAndRegisterDirectories(final Path start) throws IOException {
```
请注意,无论何时创建新目录,我们都会在 watchservice 中注册该目录,并将新密钥添加到映射中。
请注意,无论何时创建新目录,我们都会在观察服务中注册该目录,并将新密钥添加到映射中。
```java
WatchEvent.Kind kind = event.kind();
......@@ -230,13 +230,16 @@ ENTRY_MODIFY: c:\temp\data\tempFile.txt
ENTRY_MODIFY: c:\temp\data\tempFile.txt
```
这就是使用 Java 8 WatchService API 监视文件更改并进行处理的简单示例。
这就是使用 Java 8 `WatchService` API 监视文件更改并进行处理的简单示例。
学习愉快!
资源:
[WatchService Java 文档](https://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html)
[`WatchService` Java 文档](https://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html)
[遍历文件树](https://docs.oracle.com/javase/tutorial/essential/io/walk.html)
[Java 8 路径](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html)
[Lambda 表达式](https://en.wikipedia.org/wiki/Lambda)
\ No newline at end of file
......@@ -45,6 +45,8 @@ System.out.println(anotherDate + " parses as " + random);
参考文献:
[DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)
[LocalDateTime](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)
[LocalDate](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)
\ No newline at end of file
[`DateTimeFormatter`](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)
[`LocalDateTime`](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)
[`LocalDate`](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册