Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中如何从字符串编程相对路径_Java_Shell_Path - Fatal编程技术网

Java中如何从字符串编程相对路径

Java中如何从字符串编程相对路径,java,shell,path,Java,Shell,Path,我有以下问题。我正在编写一个模拟Windows命令提示符的程序。例如,用户输入:cd C:\\Intel,在我的代码中,我这样求解: setCurrentPath(Paths.get(string)); 其中setCurrentPath是一种将当前路径设置为输入路径(字符串)的方法。我的问题是,如果输入的路径是相对的,如何设置新路径。例如,如果我当前在C:\\Intel中,用户希望转到C:\\Intel\\Logs并输入:cd Logs(而不是C:\\Intel\\Logs)。我想有一些用J

我有以下问题。我正在编写一个模拟Windows命令提示符的程序。例如,用户输入:
cd C:\\Intel
,在我的代码中,我这样求解:

setCurrentPath(Paths.get(string)); 
其中
setCurrentPath
是一种将当前路径设置为输入路径(字符串)的方法。我的问题是,如果输入的路径是相对的,如何设置新路径。例如,如果我当前在
C:\\Intel
中,用户希望转到
C:\\Intel\\Logs
并输入:
cd Logs
(而不是
C:\\Intel\\Logs
)。我想有一些用Java构建的方法可以帮助我,但我只学了几个月的Java,所以我不知道它们。请注意,我将威胁路径设置为字符串。

使用
isAbsolute()
方法检查输入,如果
isAbsolute()
方法返回false,则使用
resolvePath

对于解析方法,必须首先检查路径是否为绝对路径的原因如下所述:

Path resolve(Path other)
根据此路径解析给定路径。如果另一个参数是 绝对路径然后这个方法简单地返回其他路径。如果另一个是 空路径,则此方法简单地返回此路径。否则 此方法将此路径视为目录,并解析 给定路径与此路径相对。在最简单的情况下,给定的路径 没有根组件,在这种情况下,此方法将连接 指定此路径的路径,并返回以 给定的路径。如果给定路径有根组件,则 解决方案高度依赖于实现,因此 未指明

使用
isAbsolute()
方法检查输入,如果
isAbsolute()
方法返回false,则使用
resolvePath

对于解析方法,必须首先检查路径是否为绝对路径的原因如下所述:

Path resolve(Path other)
根据此路径解析给定路径。如果另一个参数是 绝对路径然后这个方法简单地返回其他路径。如果另一个是 空路径,则此方法简单地返回此路径。否则 此方法将此路径视为目录,并解析 给定路径与此路径相对。在最简单的情况下,给定的路径 没有根组件,在这种情况下,此方法将连接 指定此路径的路径,并返回以 给定的路径。如果给定路径有根组件,则 解决方案高度依赖于实现,因此 未指明


您可以测试来自用户的路径是否为绝对路径,并根据结果直接设置它,或者使用

演示:


输出:
C:\projects\project2

您可以测试来自用户的路径是否为绝对路径,并根据结果直接设置它,或者使用

演示:


输出:
C:\projects\project2

这应该与:cd..一起使用吗?因为在我的代码中,它只是更深入。例如,如果我在C:\Intel\Logs和write cd中。。转到:C\Intel\Logs\…有趣。它在我的Windows机器上运行良好。可能尝试使用不同的路径分隔符,因此不要使用
\
而是使用
/
。它似乎在这里起作用:它起作用了,我在试验代码并删除了。normalize()。现在,当我把它拿回来时,它就正常工作了。非常感谢您的时间和努力。这是否适用于:cd?因为在我的代码中,它只是更深入。例如,如果我在C:\Intel\Logs和write cd中。。转到:C\Intel\Logs\…有趣。它在我的Windows机器上运行良好。可能尝试使用不同的路径分隔符,因此不要使用
\
而是使用
/
。它似乎在这里起作用:它起作用了,我在试验代码并删除了。normalize()。现在,当我把它拿回来时,它就正常工作了。非常感谢您的时间和努力。