2016-03-26 100 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 
     } 
相關問題