2016-06-15 47 views
0

我的GUI的一個類有一個用於文件名的變量。我想將它傳遞給另一個類,以便我可以處理文件而不必每次都對文件的名稱進行硬編碼。該程序編譯好,但我似乎無法正確運行。將另一個類的變量作爲文件名(GUI)

public void run() { 
    WordsCounter2 fileName = new WordsCounter2(); 
    essayName = fileName.getFileList(); 
    File f = new File(essayName); 
    //other code 

WordsCounter2是容納變量fileName的類,我從這個類調用它並將它指定爲文件名,但這不起作用。有人可以幫忙嗎?

 if (rVal == JFileChooser.APPROVE_OPTION) { 
     File[] selectedFile = fileChooser.getSelectedFiles(); 
     fileList = "nothing"; 
     if (selectedFile.length > 0) 
      fileList = selectedFile[0].getName(); 
     for (int i = 1; i < selectedFile.length; i++) { 
      fileList += ", " + selectedFile[i].getName(); 
     } 
     statusBar.setText("You chose " + fileList); 
    } 
    else { 
     statusBar.setText("You didn't choose a file."); 
    } 

fileList不是空的,因爲我在GUI上有一個標籤,它列出了我選擇的任何文件。

這裏是我的新編輯:現在異常發生在掃描儀的最後一行並引發NPE。你能幫我嗎?

public void run() { 
    WordsCounter2 pathNamesList = new WordsCounter2(); 
    essayName = pathNamesList.getPathNamesList(); 
    essayTitle = new String[essayName.size()]; 
    essayTitle = essayName.toArray(essayTitle); 
    for (int i = 0; i < essayTitle.length; i++) { 
     f = new File(essayTitle[i]); 
    } 
    try { 
     Scanner scanner = new Scanner(f); 
+0

你可以添加你得到該職位的錯誤?同時爲WordsCounter2.getFileList()添加代碼將會很有幫助。 – mbsingh

+0

代碼如下: –

+0

public wordsCounter2(String fileList){ this.fileList = fileList; (){ } return fileList; } –

回答

0

您的代碼失敗,因爲文件不會接受逗號分隔的文件名,事實上,它需要一個單一的文件路徑創建在提到路徑中的文件。在這裏看到:https://docs.oracle.com/javase/7/docs/api/java/io/File.html

你必須得在一個陣列的完整路徑,並把文件創建聲明如下:

File f; 
for (int i=0; i<fileList.length; i++) 
    f = new File(fileList[i]); 

其中的fileList是一個字符串數組保存路徑名的列表。

萬一你想嘗試寫一些內容,這些文件爲好,這應該是有幫助的:Trying to Write Multiple Files at Once - Java

相關問題