Wczytywanie pliku txt :) "Java"

0

Witam. Mam pewien problem z wczytywaniem pliku tekstowego do pola "jTextArea". Mianowicie mój problem polega na tym, że program nie wczytuje mi do końca pliku tekstowego. Jeżeli mamy załóżmy 10 linijek tekstu to wczyta bez problemu. Jeżeli mamy już 600 linijek to zwiecha. Myślę, że błąd leży w pamięci, ale nie wiem jak się za to złapać :(

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt)
 { 
        JFileChooser jfc = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("Pliki tekstowe(*.txt,*.srt)", "txt","srt");
        jfc.setFileFilter(filter);
        
        jfc.showOpenDialog(jMenu1);   
        
        try {
            
             Scanner s = new Scanner(jfc.getSelectedFile(),"windows-1250");
             String tmp = "";
       
               while(s.hasNextLine())
                {
                  tmp = tmp + s.nextLine()+'\n';
                  jTextArea1.setText(tmp);
                }
             s.close();
          
             } catch (FileNotFoundException ex)
                {
                   Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
                }
          
    }
0

Użyj tego http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuilder.html zamiast konkatenacji,
a jTextArea1.setText(tmp);
wywołaj za pętlą.

0

Albo użyj w pętli jTextArea1.append( s.nextLine()+'\n';);

0

Super :) Działa. Dziękuje za pomoc ;)

0

Napisałem kiedyś programik testowy. Użycie StringBuildera i jego metody append() jest mniej więcej trzy razy szybsze niż metoda append() dla JTextArea. Użycie konkatenacji dla Stringów jest, dla plików magabajtowych, dziesiątki tysięcy razy wolniejsze.

0

Ok. Dziękuje za informacje :)

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