繁体   English   中英

我如何引用Java中的目录?

[英]How do I refer to a directory in Java?

我正在运行Windows而我正在尝试引用一个目录。 我的功能就像这样开始:

File file = new File("C:\\somedir\\report");
if (!file.exists()) {
  file.mkdirs();
}
doStuffWith(file);

我得到了内一个NullPointerException doStuffWith功能,当我试图打电话给listFiles 好吧,我查看了C:\\ somedir,我发现了什么 - 有一个名为“report”的文件,没有扩展名,还有一个名为“report”的目录! 似乎发生的是file对象是指报告文件而不是目录 如何确保我指的是目录而不是文件?

我认为有一个isDirectory()方法会告诉你它是否是一个目录

- 编辑

这就是我这么早起床的原因。 我在本地运行你的代码,它对我来说很好。 能够创建新文件,读取目录内容等。您还想做什么?

一种方法是将对应于“C:\\ somedir”的文件对象传递给方法和方法内部,执行listFiles()并遍历内容,每次检查文件名,如果是“报告” “,做一个isDirectory()。 返回true时继续进行实际处理。

我不明白这个问题对我来说很好:

public class MkDir {
    static void doStuff(File dir) {
        if ( dir.isDirectory() ) {
            File[] listFiles = dir.listFiles();
            for ( File f : listFiles ) {
                System.out.println( f.getName() );
            }
        }
    }

    public static void main(String[] args) {
        File file = new File( "C:\\dev\\rep2\\rep" );
        if ( !file.exists() ) {
            file.mkdirs();
        }
        doStuff( file );
    }
}

检查您的文件系统是否已启用区分大小写( HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\\ dword:ObCaseInsensitive注册表中的HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\kernel\\ dword:ObCaseInsensitive )。

如果是这样,您可能会因案件相关问题而受到伤害。 一种检查方法:

String someName = "./nameNotUsedYet";
boolean first = new File(someName).mkdirs();
boolean second = new File(someName.toUpperCase()).mkdirs();
System.out.println("first = " + first + ", second = " + second);

如果两个mkdirs()调用都成功,则表示您有与案例相关的并发症。 如果是这样,请确保您完全正确地获得"C:\\somedir\\report"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM