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

时间:2016-03-26 20:41:12

标签: java arrays string file filereader

我试图将位于文件夹(eclipse包src / myFolder中)的文本文档读入String []。我怎样才能做到这一点?我应该使用bufferedReader还是扫描仪?必须将文档中的每个单词标记为文档ID。例如:如果第一个文件有句子"春天在这里"第二个文本文件有句子"让我们玩得开心#34;输出就像

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());
      }
    ....

我得到Null Pointer异常,可能是错误,是路径吗?

4 个答案:

答案 0 :(得分:1)

您的代码应该是这样的:

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

您收到NullPointerException,因为代码找不到文件夹位置,因此您的文件对象具有空值。

答案 1 :(得分:0)

我不知道你是否在复制代码时犯了错误,但你声明了一个名为listOfFiles的文件数组,但稍后你会尝试分配一个名为listOfMyFiles的变量。我没有得到的是为什么JAVA没有告诉你你使用了未声明的变量。

顺便说一句,您可以复制整个异常堆栈或引发的行吗?

答案 2 :(得分:0)

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

如果您引用的目录不存在,则可能会获得NullPointerException

答案 3 :(得分:0)

File类在操作系统的路径上运行。致电

new File( "src/myFolder") 

构造相对于当前工作目录的逻辑路径对象。这取决于您启动程序的位置。它与类路径无关。

如果要在类路径中访问文件,则必须使用Classloader.getSystemResource方法:

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

假设&#34; src&#34;是包路径的根元素。之后你可以迭代文件:

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