2016-03-26 99 views
-1

我试图在位于文件夹(位于eclipse包src/myFolder中)的文本文件中读入到String []中。我怎样才能做到这一点?我应该使用缓冲读取器还是扫描仪?文档中的每个单词都必须标记为文档ID。例如:如果第一个文档有“Spring is here”这个句子,第二个文本文档有句“Let's fun”。输出将像使用JAVA读取文件夹中的多个文件

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

我得到空指针异常,可能是错误,它是路径吗?

+0

使用'URL url = this.getClass()。getResource(“/ Lab1_Data”); File file = new File(uri.toURI());' –

回答

0

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

顺便说一句,你可以复制整个异常堆栈或提出的行吗?

+0

发生了变化,对此感到抱歉 – shockwave

+0

好的,问题解决了吗? – Hellzzar

0

File[] listOfFiles=null;更改为File[] listOfMyFiles=null;似乎修复它。

如果您所引用的目录不存在,您可能会收到NullPointerException

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值。

0

File类在操作系统的路径上运行。调用

new File("src/myFolder") 

构造相对于当前工作目录的逻辑路径对象。这取决于你开始你的程序的地方。它与类路径无关。

如果你想在classpath中访问文件,你必须使用Classloader.getSystemResource方法:

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

假设“SRC”是你的包的根路径elemet。然后你可以遍历这些文件:

 for (File file : files) 
     { 
      // do something with the file 
     } 
相关问题