problem z otwarciem pliku (Filereader)

0

poniższy kod pisze w Netbeansachi mam problem w tym fragmencie kodu z utworzeniem obiektu klasy FileReader podając mu jako parametr obiekt File zwrócony z metody getselectFile komponentu JFileChooser ? nie wiem dlaczego gdyż dopiero zaczynam programować w javie ... za pomoc serdecznie dziękuje :)

javax.swing.JFileChooser oknowczytaniapliku = new JFileChooser();
         javax.swing.filechooser.FileFilter filter = new javax.swing.filechooser.FileNameExtensionFilter("Java", "java");
         oknowczytaniapliku.setFileFilter(filter);            
         oknowczytaniapliku.setAcceptAllFileFilterUsed(false); 
         int retval = oknowczytaniapliku.showOpenDialog(null);
         if (retval == JFileChooser.APPROVE_OPTION) {          
            java.io.File plik = oknowczytaniapliku.getSelectedFile();  
          java.io.FileReader plikotwarty = new java.io.FileReader(plik);
         }
0

Nie piszesz w czym problem, zapewne chodzi o to, że nie obsłużyłeś wyjątku FileNotFoundException.
Zapoznaj się też z poleceniem import, kod

  FileReader plikOtwarty=new FileReader(plik);

jest dużo bardziej czytelny. Z obsługą wyjątku wyglądał by tak:

try
{
  FileReader plikOtwarty=new FileReader(plik);
}
catch(FileNotFoundException e)
{
  System.out.println(e);
}
0

Wielkie dzięki :) zaimportowałem cały pakiet java.io dla bezpieczeństwa, obsłużyłem wyjątek i działa :)

Natomiast mam problem z linią gdzie tworzę obiekt BuffereReader, którym mam odczytywać wiersze pliku i wpisywać je do okna JTextField (oknozrodlowe), netbeans zwraca jakiś błąd w tej lini w polu edycyjnym kodu oraz każde uruchomienie wiąże się z wejściem do obsługi wyjątku Bufferedreader ... nie wiem gdzie jest błąd ...

    private void otworzActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
         javax.swing.JFileChooser oknowczytaniapliku = new JFileChooser();
         javax.swing.filechooser.FileFilter filter = new javax.swing.filechooser.FileNameExtensionFilter("Java", "java");
         oknowczytaniapliku.setFileFilter(filter);            
         oknowczytaniapliku.setAcceptAllFileFilterUsed(false); 
         int retval = oknowczytaniapliku.showOpenDialog(null); 
         if (retval == JFileChooser.APPROVE_OPTION) {          
            java.io.File plik = oknowczytaniapliku.getSelectedFile();  
            try{
            java.io.FileReader plikotwarty = new java.io.FileReader(plik);
             }
            catch(FileNotFoundException e)
                {
                   System.out.println(e);
             }
          String linia = "";
        try{   
        java.io.BufferedReader buforodczytupliku =new java.io.BufferedReader(plikotwarty);
           while((linia = buforodczytupliku.readLine()) != null){
              oknozrodlowe.append(linia + "\n");            //oknozrodlowe komponent typu JTextFieeeld
            }
        }
        catch(Exception e) {
        System.out.println("Wystapil blad w czasie wprowadzania danych");
        }
   } 
<\code>
0
  1. Jak już zaimportowałeś cały pakiet java.io, to nie pisz w kodzie java.io.BufferedReader. Będzie kod łatwiej czytać.
  2. Nie możesz tworzyć obiektu BufferdeReader(plikotwarty) jeżeli wcześniej wystąpił błąd.
   if (retval == JFileChooser.APPROVE_OPTION) 
   {          
        File plik = oknowczytaniapliku.getSelectedFile();  
        try
        {
            FileReader plikotwarty = new FileReader(plik);
            BufferedReader buforodczytupliku =new BufferedReader(plikotwarty);
            String linia = "";
            while((linia = buforodczytupliku.readLine()) != null)
            {
                oknozrodlowe.append(linia + "\n");            //oknozrodlowe komponent typu JTextFieeeld
            }
        }
        catch(FileNotFoundException e)
        {
            System.out.println(e);
        }
        catch(Exception e) 
        {
            System.out.println("Wystapil blad w czasie wprowadzania danych");
        }
     }
3. Jaki błąd sygnalizuje NetBeans? JTextField jest z natury jednowierszowy i nie ma metody append(). Zamień JTextField na JTextArea.
0

dziękuje za pomoc w rozwiązaniu problemu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1