2016-04-07 15 views
0

'a bir .txt dosyası almak için kullanıyorum Şu anda bir öğrencinin kayıt olabileceği bir JList dersi gösteren bir proje üzerinde çalışıyorum. Liste öğesine tıklandığında, txt dosyalarının adını almak için setTextArea() yöntemine bir değişken iletilir. Örneğin, Bilgisayar Bilimi üzerine tıklarsam, txt dosyasını almak için bir courseName değişkeni iletilir ve URL'ye eklenir.getClass(). GetResource öğesini bir JTextArea

enter image description here

Bu mükemmel çalışıyor. JAR dosyasını kullandığım zamanlar hariç. Biliyorum .getClass() ve getResource() bir JAR kullanırken kaynaklara erişmek için kullanılmalıdır. Ama benim çalışmamı elde edemiyorum. İşte ben orijinal kodu vardı.

public void valueChanged(ListSelectionEvent e) 
{ 
    int selectionNum = courseList.getSelectedIndex(); 
    String courseName; 

    //Switch statement to pass strings to method 
    switch(selectionNum) 
    { 
     case 0: courseName = "computer_science"; 
       setTextArea(courseName); 
       currentCourseClicked ="0"; 
       break; 

     case 1: courseName = "business"; 
       setTextArea(courseName); 
       currentCourseClicked ="1"; 
       break; 

     case 2: courseName = "business2"; 
       setTextArea(courseName); 
       currentCourseClicked ="2"; 
       break; 

     case 3: courseName = "engineering"; 
       setTextArea(courseName); 
       currentCourseClicked ="3"; 
       break; 

     case 4: courseName = "sport"; 
       setTextArea(courseName); 
       currentCourseClicked ="4"; 
       break; 

     case 5: courseName = "early"; 
       setTextArea(courseName); 
       currentCourseClicked ="5"; 
       break; 

     case 6: courseName = "social"; 
       setTextArea(courseName); 
       currentCourseClicked ="6"; 
       break;    
    } 

} //End of valuesChanges Method 



/** 
* This method is used to read the file, with the course name passed 
* from the valueChanged method. 
* @param courseName 
*/ 
@SuppressWarnings("resource") 
public void setTextArea(String courseName) 
{ 
    descriptionPanel.setVisible(true); 
    enrol.setVisible(true); 
    enrol.setFont(new Font("", Font.BOLD, 20)); 

    try 
    { 
     //This retrieves the information from a text file 
     FileReader file = new FileReader("./res/courseInfo/" +courseName + ".txt"); 
     Scanner fileReaderScan = new Scanner(file); 

     String storeAll = ""; 

     //while loop to read trough lines of the text file 
     while(fileReaderScan.hasNextLine()) 
     { 
      String temp = fileReaderScan.nextLine() + "\n"; 
      storeAll += temp; 
     } 
     descriptionTextArea.setText(storeAll); 
    } 
    catch (FileNotFoundException e1) 
    { 
     e1.printStackTrace(); 
    } 
} //end of setTextArea method 

Daha sonra getClass ve getResource kullanmaya çalıştım. ancak bir URL ile çalışmaz ve URL türünü String olarak değiştirmemi ister. Eğer bunu yaparsam, getClass ve getResource işe yaramaz.

enter image description here

Daha sonra String urlString = url + ""; kullanarak dizeye url bitiştirmek çalıştı ama bu da işe yaramadı.

Bununla ilgili nasıl bir fikir var?

+0

şudur: Scanner ile çalışıyorsanız bu yana


Sana tamamen FileReader kaldırmak ve yerine Tarayıcı nesneyi başlatmak için bu hattı kullanmak önermek? Kavanoz dosyanızda mı? Eğer tam olarak nerede varsa? –

+0

Url, FileReader'da çalışmadığından. 'Url 'bir String türüne dönüştürmeyi ister. Ama bunu yaptığımda getClass(). GetResource çalışmıyor. – Aaronward

+0

Ne demek istiyorsun * "JAR Dosyasını kullandığımda hariç" *? – aribeiro

cevap

2

Dosya JAV dosyasında, JAR dosyasında değil, geçerli çalışma dizininde dosya almaya çalışırken, FileReader çalışmaz, sanırım.

FileReader f = new FileReader(new File(ClassA.class.getResource("/res/courseInfo/" +courseName + ".txt").toURI())); 

Bu sorunu çözmek gerektiğini düşünüyorum:

Bu çizgiyi kullanmalıdır. senin kaynak tam

Scanner fileReaderScan = new Scanner(getClass().getResourceAsStream("/res/courseInfo/" +courseName + ".txt")); 
+0

Hala tutulmada çalışıyor. Kavanozda çalışmaz, JTextField hala boş – Aaronward

+0

@Aaronward Metin dosyasını doğru dizinde olduğundan emin misiniz? – Hackerdarshi

+1

@Aaronward Ayrıca, jar dosyasını konsoldan çalıştırmayı deneyin, böylece yığın izlemeyi görebilirsiniz. – Hackerdarshi