P.d. El txt de gran tamaño puede tener unas 500.000 lineas, pongo aqui la clase que lee los datos, trabaja con ellos y muestra por ventana, como vereis es un hilo para no interferir con el hilo del swing.
Agradezco mucho toda la ayuda que me podais prestar.
Código:
class cPro extends Thread{
String lineapro;
public cPro(){
}
public void run(){
jBar3.setIndeterminate(true);
try {
while((lineapro=vproo.readLine())!=null){ //vproo lo defino dentro del boton del swing
Matcher m1 = p1.matcher(lineapro); // Matcher es una variable global
if(m1.find()){
if(lineapro.split("\t").length==3) {
if(lineapro.split("\t")[2].length()==3 || lineapro.split("\t")[2].length()==30){
synchronized (jTextArea6){
jTextArea6.append(lineapro+"\t\n");
contproo++;
jLabel15.setText("Contador: "+contproo);
}
}
else
{
synchronized (jTextArea7){
jTextArea7.append(lineapro+"\n");
contproomal++;
jLabel17.setText("Contador: "+contproomal);
}}
}
if(lineapro.split("\t").length==4) {
if(lineapro.split("\t")[2].length()==3 || lineapro.split("\t")[2].length()==30){
synchronized (jTextArea6){
jTextArea6.append(lineapro.replace(lineapro.split("\t")[3], "\t"+lineapro.split("\t")[3])+"\n");
contproo++;
jLabel15.setText("Contador: "+contproo);
}
}
else
{
synchronized (jTextArea7){
jTextArea7.append(lineapro+"\n");
contproomal++;
jLabel17.setText("Contador: "+contproomal);
}
}
}
if(lineapro.split("\t").length!=3 && lineapro.split("\t").length!=4){
synchronized (jTextArea7){
jTextArea7.append(lineapro+"\n");
contproomal++;
jLabel17.setText("Contador: "+contproomal);
}
}
}
else{
synchronized (jTextArea7){
jTextArea7.append(lineapro+"\n");
contproomal++;
jLabel17.setText("Contador: "+contproomal);
}
}
}
}
catch (IOException ex) {
Logger.getLogger(cVbulletin.class.getName()).log(Level.SEVERE, null, ex);
}
finally {
jBar3.setIndeterminate(false);
Thread.currentThread().stop();
}
}
}


