找不到代码错误 - 尝试打印父目录的名称

can't find error with code - trying to print name of parent directory

如标​​题所示,我正在尝试打印当前目录和父目录的名称,并打印每个目录的所有文件和目录。该代码适用于当前目录。

但是当我尝试打印父目录的名称时,它不知何故只是空白。

以下是我的代码。

import java.io.*;

class IOTest2
{
    public static void printList(File[] list)
    {
        for(int i=0; i<list.length; i++)
        {
            System.out.print(list[i].getName());
            if(list[i].isDirectory())
                System.out.println("\t \t DIR");
            else
                System.out.println("\t \t FILE");
        }
    }
    public static void main(String[] args)
    {
        String workingDir = System.getProperty("user.dir");
        File currentDir = new File(workingDir);
        System.out.println("current dir: " + currentDir.getName());
        File[] curList = currentDir.listFiles();
        printList(curList);

        System.out.println("--------------------------");
        File parentDir = currentDir.getParentFile();
        System.out.println("parent dir: " + parentDir.getName());
        File[] parList = parentDir.listFiles();
        printList(parList);
    }
}

下面是我在控制台中得到的关于父目录的结果。(当前目录工作正常,所以我没有在这里包含它) 可以看到,"parent dir: "

后面是空白
parent dir:
$Recycle.Bin             DIR
book             DIR
bootmgr          FILE
BOOTNXT          FILE
Config.Msi               DIR
Documents and Settings           DIR
gpki             DIR
hiberfil.sys             FILE
Intel            DIR
Irvine           DIR
JavaStudy                DIR
MATS             DIR
MSOCache                 DIR
myclass          DIR
MyJava           DIR
NaverGame                DIR
Nexon            DIR
pagefile.sys             FILE
PerfLogs                 DIR
PhoneBookVer3_duplicate class error              DIR
Program Files            DIR
Program Files (x86)              DIR
ProgramData              DIR
Recovery                 DIR
swapfile.sys             FILE
System Volume Information                DIR
Temp             DIR
Users            DIR
Windows          DIR
XecureSSL                DIR
YourJava                 DIR

C:\JavaStudy>

感谢您的宝贵时间:)

您的当前目录是 C:\JavaStudy,但由于 C: 是驱动器,它不会打印出(如预期的那样)C:\ 文件路径。如果要打印字符串 C:\,而不是:

File parentDir = currentDir.getParentFile();
System.out.println("parent dir: " + parentDir.getName());

只需致电:

System.out.println("parent dir: " + currentDir.getParent());

File parentDir = currentDir.getParentFile();
System.out.println("parent dir: " + parentDir.getAbsolutePath());

它总是 returns 父目录的字符串(如果不存在则为 null)

在我的机器上打印出来:

--------------------------
parent dir: C:\
$Recycle.Bin         DIR
etc...