Files.newInputStream(Paths.get(path))和new FileInputStream(path)的区别
时间: 2023-07-14 14:07:25 浏览: 263
java文件操作之Path,Paths,Files
`Files.newInputStream(Paths.get(path))` 和 `new FileInputStream(path)` 都用于创建一个输入流来读取文件,但它们有一些区别:
1. `Files.newInputStream(Paths.get(path))` 是 Java NIO (New I/O) 包中的方法,而 `new FileInputStream(path)` 是旧的 Java I/O (Input/Output) 包中的方法。NIO 提供了更为灵活和高效的 I/O 操作方式。
2. `Files.newInputStream(Paths.get(path))` 返回一个 `InputStream` 对象,而 `new FileInputStream(path)` 返回一个 `FileInputStream` 对象。因此,前者使用的是 NIO 的输入流,而后者使用的是旧的输入流。
3. `Files.newInputStream(Paths.get(path))` 可以处理任何类型的文件路径,包括本地文件系统、网络路径和其他类型的文件系统。而 `new FileInputStream(path)` 只能处理本地文件系统中的文件路径。
4. `Files.newInputStream(Paths.get(path))` 可以使用额外的选项来配置输入流的行为,比如设置缓冲区大小、文件读取选项等。而 `new FileInputStream(path)` 没有提供类似的配置选项。
综上所述,如果你使用的是 Java NIO 包,需要更灵活和高效的 I/O 操作,或者需要处理非本地文件系统中的文件路径,那么你可以使用 `Files.newInputStream(Paths.get(path))`。如果你只需要处理本地文件系统中的文件路径,且不需要额外的配置选项,那么你可以使用 `new FileInputStream(path)`。
阅读全文