检查字符串是否为java中的理论文件路径/目录

检查字符串是否为java中的理论文件路径/目录,java,Java,我正在编写一个程序,我需要查看字符串理论上是否可以是文件路径/目录(绝对或相对)。我一直在四处寻找,想看看是否有一种简单的方法可以做到这一点,我发现了大量的问题,这些问题集中在查看文件/文件夹是否存在(例如,或) 是否有一种方法可以查看字符串是否是一个文件路径/目录,而不必实际存在 编辑:评论中要求我详细说明什么是有效的文件路径/目录: 我的程序处理文件路径的方式是,它通常(具体取决于它需要加载的内容)获取文件路径/目录的一些“部分”,并使用它们来读取文件 因此,我们可以使用以下规则: 字符串包

我正在编写一个程序,我需要查看字符串理论上是否可以是文件路径/目录(绝对或相对)。我一直在四处寻找,想看看是否有一种简单的方法可以做到这一点,我发现了大量的问题,这些问题集中在查看文件/文件夹是否存在(例如,或)

是否有一种方法可以查看字符串是否是一个文件路径/目录,而不必实际存在

编辑:评论中要求我详细说明什么是有效的文件路径/目录:

我的程序处理文件路径的方式是,它通常(具体取决于它需要加载的内容)获取文件路径/目录的一些“部分”,并使用它们来读取文件

因此,我们可以使用以下规则:

字符串包含以下文件路径之一:

  • 以根文件夹的名称(绝对文件路径)开头,或以目录名(相对文件路径)开头,或以文件名开头
  • 具有0个或多个
    /
    字符以指示子文件夹
  • 以扩展名结尾(例如:.txt、.vs或.fs)
然而,目录

  • 以根文件夹的名称(绝对目录)开头,或以目录名(相对目录)开头
  • 具有0个或多个
    /
    字符以指示子文件夹
  • /
    字符结尾
此外,字符串中不允许有空格

我正在使软件最初在Windows上运行,但我可能需要将其移植到Linux(因此更改根文件夹的名称,或者更多)。

您可以使用path.get()确定路径是否有效

try {
    Paths.get(path);
} catch (InvalidPathException | NullPointerException ex) {
    return false;
}
return true;
要检查语义有效的绝对路径,可以使用File.isAbsolute()


编辑:根据您不允许使用空格的要求,您需要单独进行检查。Windows允许将空格作为文件名的一部分。

您能举例说明哪些是合法的文件路径,哪些不是合法的文件路径吗?因为令人惊讶的是,许多任意字符串值都是合法路径。您可以尝试使用正则表达式。唯一的问题是:什么有效,什么无效取决于文件系统。不,我不知道相关的正则表达式。要扩展Joachim的评论:相对路径只能是一个文件名,因为这些文件名没有太多限制,所以可以有理论上的相对路径,例如
“我不知道这是否是一个路径”
(请注意,文件不必有扩展名)。因此,您可能希望施加更多的限制,其中之一可能是问题中的路径必须存在。“…以太绝对或相对…”因此
“foo”
将是一条路径。另外,在*nix文件系统中,几乎任何东西都是有效的文件名…可能java.io.FileSystem.normalize(String pathname)OP说路径不必存在,但它们可以存在。这个解决方案确实会检查文件路径是否也存在,这不是我想要的。它不会检查文件系统上是否存在路径。如果Path在语义上是有效的,那么Path.get()只会创建一个Path对象。@Khurram抱歉,我以前在其他地方见过这个方法,他们说它还检查了文件的位置。如果没有指定文件,但只有一个目录,此方法是否也有效?关于空格,我倾向于使用的文件夹不包含空格,因此我想检查一下。但我想我可以找到一个单独的解决办法