2017-05-05 55 views
0

我工作在x64 Windows操作系统使用jdk 1.8 x64 我的问题一个NetBeans Java项目是:“读书目录的内容(仅文件)与方法file.listfolders()输出空,如果从我的TextProcessor类实例调用但是,改变。方法static,把它从main()作品完美,所以它没有任何关系,据我了解做权限。只能从main()读取文件夹/目录吗? listfiles()返回null?

private List<String> get_files_paths(String data_path) { 
    File folder = new File(data_path); 
    List<String> full_paths = new ArrayList<String>(); 
    for (final File fileEntry : folder.listFiles()) { 
     if (!fileEntry.isDirectory()) 
      full_paths.add(fileEntry.getAbsolutePath()); 
    } 
    return full_paths; 
} 

在此先感谢。

+0

你的方法不能返回null。请提供[mcve]。 – assylias

+0

感谢您的回复,我假设您已经尝试过或者已经有过经验,并且从未以非静态方式读取文件时获得“null”,但是,我正在变得“无效”,并且我希望有人会遇到了这个问题并找到了解决方案。 – shadespirit

+0

你说它在某些情况下有效,但不在其他情况下 - 但你没有显示相应的代码。问题很可能出现在您未显示的代码中。你需要展示一个*完整的例子来重现问题。查看我上面发布的链接。 – assylias

回答

0

下面的代码工作正常,只要路径我认为你的路径必须是无效的如果目录不存在,ile :: listFiles将返回空值。

private List<String> get_files_paths(String data_path) { 
    File folder = new File(data_path); 
    if(!folder.exists() || !folder.isDirectory()){ 
     throw new IllegalArgumentException("Invalid directory"); 
    } 
    List<String> full_paths = new ArrayList<>(); 
    for (File fileEntry : folder.listFiles()) { 
     if (fileEntry.isFile()) 
      full_paths.add(fileEntry.getAbsolutePath()); 
    } 
    return full_paths; 
} 
+0

感谢您的回复,正如我所说的,该方法在“非静态”上下文中(通过main())工作,它将我在该目录中的文件与私有文件一起输出给我,但它给了我一个null指针异常,当它从类的构造函数中被调用以将它追加到列表路径变量。确切地说,它是folder.listFiles(),它返回一个空指针异常,而不是“get_files_paths()”。 – shadespirit

+0

您可以显示该NPE在哪条线上抛出? List中的add方法接受空值,所以唯一可能的位置是在folder.listFiles()中。 – Beri

+0

我试着用给定的解决方案,它不会为变量'p'输出问题,但是对于'o'它会为以下测试输出问题: TextProcessor p = new TextProcessor(“E:\\ TEST”,“E :\\ DIST”,5); TextProcessor o = new TextProcessor(“E:\\ TEST”,“E:\\ Dist”,4);如果(!folder.exists()||!folder.isDirectory()){ 抛出新的IllegalArgumentException(“Invalid directory”); – shadespirit

0

我已经解决了这个问题,但它很奇怪!我之前是这么做的: - 我通过右键单击文件夹 - >属性,从我想要获取文件的位置获得路径。粘贴到NetBeans中时,我获得了“E:\ TEST”。 现在,我执行以下操作: -I在NetBeans IDE中使用键盘将值写入,如下所示:“E:\ TEST”(相同) 并且它可以工作!我真的不知道为什么会发生这种情况?!

相关问题