【问题标题】:Java File List: NPE while using for loopJava 文件列表:使用 for 循环时的 NPE
【发布时间】:2014-01-18 11:51:41
【问题描述】:

我已经编写了简单的 java 代码来在 Linux 中显示文件列表,以将其用于使用 TCP 的 FTP 程序(我将一步一步地使用所有功能)。我在谷歌搜索了大约半小时后发布了这个问题。

import java.io.*;
class FileList
{
public static void main(String args[])
{
String dirname="/home/vaibhav/Test";
File f1=new File(dirname);
String sl[]=f1.list();
System.out.print(f1.list()+"......."+sl.length+" files found.");
for(int i=0;i<sl.length;i++)
{ 
System.out.print(sl[i]+" ");
}      
}
}

输出:

vaibhav@vaibhav-VirtualBox:~/Java$ javac FileList.java
vaibhav@vaibhav-VirtualBox:~/Java$ java FileList
Exception in thread "main" java.lang.NullPointerException
    at FileList.main(FileList.java:10)

我的目录测试和 Java 内容:

vaibhav@vaibhav-VirtualBox:~$ cd /home/vaibhav/Test
vaibhav@vaibhav-VirtualBox:~/Test$ dir
1  2
vaibhav@vaibhav-VirtualBox:~/Test$ ls -al
total 8
drwxrwxrwx  2 vaibhav vaibhav 4096 Jan 18 15:04 .
drwxr-xr-x 25 vaibhav vaibhav 4096 Jan 18 16:50 ..
-rw-rw-rw-  1 vaibhav vaibhav    0 Jan 18 15:04 1
-rw-rw-rw-  1 vaibhav vaibhav    0 Jan 18 15:04 2
vaibhav@vaibhav-VirtualBox:~/Test$ cd
vaibhav@vaibhav-VirtualBox:~$ cd /home/vaibhav/Java
vaibhav@vaibhav-VirtualBox:~/Java$ ls -al
total 20
drwxr-xr-x  2 vaibhav vaibhav 4096 Jan 18 16:52 .
drwxr-xr-x 25 vaibhav vaibhav 4096 Jan 18 16:50 ..
-rw-r--r--  1 vaibhav vaibhav  990 Jan 18 16:52 FileList.class
-rw-r--r--  1 vaibhav vaibhav  477 Jan 18 16:52 FileList.java
-rw-r--r--  1 vaibhav vaibhav  487 Jan 18 16:52 FileList.java~

当我将 String dirname 更改为也是 pwd 的 /home/vaibhav/Java 时,程序执行得很好。

出了什么问题? 谢谢。

【问题讨论】:

  • for循环第10行
  • Mmmh ...我对此表示怀疑,为什么我们没有从print 获得输出。我认为 sl 为空。是什么给了f1.isDirectory()
  • 不,sl 不为空。在运行代码之前,我向其中添加了 2 个文件。
  • 和密码有关吗?

标签: java linux nullpointerexception filepath


【解决方案1】:

最好试试这个:

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }

希望对你有帮助

【讨论】:

  • 在发帖之前我也试过了。但是一篇帖子stackoverflow.com/a/11643057/2642938 说使用list() 比使用listFiles() 更好。我的主要问题是“当我将 String dirname 更改为 /home/vaibhav/Java 这也是 pwd 时,程序执行得很好。”
  • 你能更清楚地解释一下你的要求到底是什么@VAL
  • 显示来自 .../Test 目录的文件列表。 @SanthoshKumar544
  • 所以我发布的答案肯定会显示您想要的路径中的文件列表,还包括目录@VAL
  • 是的,我不知道为什么它之前没有显示它!这就是为什么我把它贴在这里。现在多次更改目录名后,它运行良好。
猜你喜欢
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 2020-01-18
  • 2017-03-19
  • 1970-01-01
  • 2022-12-07
  • 2014-08-11
  • 2011-12-08
相关资源
最近更新 更多