2016-06-15 3 views
0

私のGUIの1つのクラスは、ファイル名の変数を持っています。これを別のクラスに渡して、毎回ファイルの名前をハードコードすることなくファイルを処理できるようにしたいと思います。プログラムはうまくコンパイルされますが、正しく実行することはできません。 ファイル名(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."); 
    } 

私が選択したファイルをリストするGUI上にラベルがあるので、fileListは空ではありません。

ここに私の新しい編集があります:例外はスキャナの最後の行で発生し、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(文字列ファイルリスト){ this.fileList = fileList; } public String getFileList(){ 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

関連する問題