2017-09-01 63 views
0

我是Java中学习IO和NIO的新手。java中IO和NIO的路径和路径

我不知道什么

  • java.nio.file.Pathjava.nio.file.Paths之间的区别?
  • PathPaths之间的差额?

谢谢任何​​解释。

+0

[Path](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html)和[Paths](https://docs.oracle.com/) JavaSE的/ 8 /文档/ API/JAVA/NIO /文件/ Paths.html)。 – Kayaman

+0

@歌曲请密切关注你的软件包名称。没有“基于流的io”或“java.io.file.Paths”类。包含“基于块的io”传输的“新IO”位于java.nio.file.Paths下。基本上,“新IO”为Java添加了两件事:基于块的传输和强大的Path系统。旧的“java.io”系统有一个Path系统,主要建立在字符串操作和File概念上(File不需要存在,可以是一个目录)。 –

回答

0

Path是一个表示路径的类。任何你通常已经有Path的地方都涉及到这里的方法。

路径是一组实用程序。这些实用程序会从其他类型的输入中生成Path对象。这些实用程序不需要提前Path。它们是常用的常用代码的便捷包装,以减少对剪贴的需求。

下面是使用Paths的示例:

/* I have a String, but need a Path */ 
Path path = Paths.get("/home/user/.config"); 

下面是使用Path的示例:

/* I have a Path, but need a String */ 
String name = path.toString(); 

为什么需要像Paths一个工具类的原因是一个数字的一​​个组合的因素:

  1. Path是一个接口,因此它的构造函数的直接调用是不可能的;因为它没有构造函数。
  2. String是最后一个类,修改它的类可能会比创建实用类更难作为替代。因此,虽然"/home/user/.config".toPath()可能是一种有效的面向对象的处理方式,但遗留代码可以防止在没有更多考虑的情况下添加该方法。
  3. URI的压力与上述String中所述的压力类似。

当他们添加到NIO Path类中时,他们希望他们的代码被检查并集成到核心Java库中。

的东西,很容易让别人添加到库具有以下特点:

  1. 你不跟图书馆的现有部分混乱的方式,通过建立库调用接口暴露(这样做会破坏图书馆的用户,因为现在他们需要重写他们的程序)。
  2. 你有一个退出的计划,很容易(这是至关重要的,因为你可能无法按时交付)

如果他们把修改StringURI的方法有getPath(...)功能,那么他们会增加将他们的代码集成到Java标准库中的困难。

+0

路径是一个集合,如果'utilities',你引用'import java.io.file.paths'? – Songs

+0

@歌曲我指的是'java.nio.file.Paths'“旧”io /文件包下没有路径。我还更新了这个问题,以了解与现有图书馆合作时所面临的压力。 –