有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用JAVA读取文件夹中多个文件的数组

我试图将位于文件夹(eclipse包src/myFolder内)中的文本文档读入字符串[]。我怎样才能做到这一点?我应该使用bufferedReader还是扫描仪?文档中的每个单词都必须标记为一个文档ID。例如:如果第一个文档有一句话“Spring is here”,而第二个文本文档有一句话“Let's have fun”。输出结果如下

Spring     1
is         1
here       1
Let's      2
have       2
fun        2

我主要关心的是阅读多份文件。这是我尝试读取文件的过程

public static void main(String[] args){
    String[] docs = {"Spring is here"};

    File[] listOfMyFiles=null;
    String[] myDocs;

    File folder = new File("src/Lab1_Data");
      listOfMyFiles = folder.listFiles();
      myDocs = new String[listOfMyFiles.length];
      for(int i=0;i<listOfMyFiles.length;i++) {
         myDocs[i] = listOfMyFiles[i].getName();
         System.out.println("File: " + listOfMyFiles[i].getName());
      }
    ....

我得到了空指针异常,可能是什么错误,是路径吗


共 (4) 个答案

  1. # 1 楼答案

    你的代码应该是这样的:

    public File getFolder(String folderName) throws URISyntaxException {
           URL url = this.getClass().getResource("/Lab1_Data");
           File file = new File(url.toURI());
           return file;
    }
    

    您将获得NullPointerException,因为代码未找到文件夹位置,因此您的文件对象具有null值

  2. # 2 楼答案

    我不知道您是否在复制代码时出错,但您声明了一个名为listOfFiles的文件数组,但后来您尝试分配给名为listOfMyFiles的变量。我不明白的是,为什么JAVA没有告诉您使用了未声明的变量

    顺便问一下,你能复制整个异常堆栈或引发异常的行吗

  3. # 3 楼答案

    File[] listOfFiles=null;更改为File[] listOfMyFiles=null;似乎可以解决这个问题

    如果你引用的目录不存在,你可能会得到一个NullPointerException

  4. # 4 楼答案

    File类在操作系统的路径上运行。召唤

    new File( "src/myFolder") 
    

    构造相对于当前工作目录的逻辑路径对象。这取决于你在哪里开始你的项目。它与类路径无关

    如果你想访问类路径中的文件,你必须使用类加载器。getSystemResource方法:

            URL url = ClassLoader.getSystemResource( "src/Lab1_Data");
            File ch = new File(url.toURI());
            File[] files = ch.listFiles();
    

    假设“src”是包路径的根元素。之后,您可以对这些文件进行迭代:

            for ( File file : files )
            {
                // do something with the file
            }