0

在我的客户端,如果我 cd 进入一个目录并输入密码,它会显示正确的密码。(ftp> 表示客户端)

ftp> cd adam
ftp> pwd
remote working directory: amlodoz1/p1/adam

但是,如果我然后'cd ..'退出它并点击 pwd,它会给我这个:

ftp> cd ..
ftp> pwd
remote working directory: amlodoz1/p1/adam/..

显然, pwd 应该返回amlodoz1/p1/,但它只是喜欢将我 cd 到的任何字符附加到路径名中。

我对“cd”和“pwd”的实现在这里。

    public void cd(String dirName) throws IOException{
            System.out.println("Changing directory to '" + dirName + "'");
            File dir = new File(dirName);
            System.setProperty("user.dir", dir.getAbsolutePath());
    }

    public void pwd() throws IOException{
            String pwd = System.getProperty("user.dir");
            System.out.println("Remote working directory: " + pwd);
    }

我正在考虑为“cd ..”编写一个 if 子句,但我不知道在 setProperty 函数中将“user.dir”设置为什么。

4

1 回答 1

0

好吧,我刚刚意识到有一种.getParent()方法,所以写出来是有效的。

    public void cd(String dirName) throws IOException{
            System.out.println("Changing directory to '" + dirName + "'");
            if(dirName.equals("..")){
                    File dir = new File(System.getProperty("user.dir"));
                    System.setProperty("user.dir", dir.getAbsoluteFile().getParent());
            }
            else{
                    File dir = new File(dirName);
                    System.setProperty("user.dir", dir.getAbsolutePath());
            }

    }
于 2016-02-26T22:29:18.403 回答