[quote=jopss]Poxa, vlw mesmo thingol… um teste simples que nao tinha me passado… :shock:
Na verdade nao resolveu a situacao, mas se chegou ao exato problema. O problema não está então no carregamento do texto, mas sim NO CARREGAMENTO PELO JTEXTAREA !!
O teste deu sim 3 segundos para o carregamento do arquivo, mas em torno de 40 segundos para carregar o buffer no jTextArea…
jTextArea.setText(buffer.toString)
Pode me ajudar nisso??? Seria alguma propriedade do componente??? Teria algum especifico para textos grandes???
vlw galera.
jopss [:p][/quote]
Não sei se vai te ajudar mas tá ai minha contribuição , espero que Seja util
botao1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent Clik){
ProgressBar.setValue(0);
//JFileChooser fileChooser = new JFileChooser(".");
JFileChooser fileChooser = new JFileChooser("Y://Producao//feitos"); // Força a Abrir em uma Pasta Determinada
fileChooser.showOpenDialog(tela);
File arquivo_Entrada = fileChooser.getSelectedFile();
if (arquivo_Entrada != null){
textArea1.setText("");
String s = LeitorBuffer.ler(arquivo_Entrada);
textArea1.append(s);
s = null;
arquivo_Entrada = null;
fileChooser = null;
textArea1.setCaretPosition(0);
int quant = textArea1.getLineCount();
maxValue = quant;
ProgressBar.setMaximum(maxValue - 2);
// System.out.println("Bytes e memoria livres Antes de passar ganbage collection o System.gc() = " + Runtime.getRuntime().freeMemory());
System.gc();
for (int j = 0; j < quant; j++) {
final int percent = j;
// Função Para Barra de Processamento Começo
ProgressBar.setValue(percent);
// Função Para Barra de Processamento Final
}
}
}
});
botao2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent Clik){
ProgressBar.setValue(0);
if (!textArea1.getText().equals("")){
textArea1.setCaretPosition(0); // Mantem o Cursor no inicio
Chave_Segundaria = "+$DJDE$";
Chave_Primaria = JOptionPane.showInputDialog(null, " Digite Ou Use o Leitor Optico Para Pesquisa ", "Box de Pesquisa", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, " Não Foi Selecionado Nenhum Arquivo "+"\n"+"Por Favor Click em Abrir Para Selecionar o Arquivo "+"\n"+" a Ser Pesquisado", " Mensagem de Erro Verificar", JOptionPane.ERROR_MESSAGE) ;
}
if (Chave_Primaria != null){
if (!Chave_Primaria.equals("")){
int Codigo_de_Pesquisa = textArea1.getText().indexOf(Chave_Primaria.trim().toUpperCase(), posInicial);
if(Codigo_de_Pesquisa < 0){
JOptionPane.showMessageDialog(null, " Codigo Não Encontrado ");
posInicial = 0;
}else{
Cont_Reg++;
if(Cont_Reg > 1){
Monta_Cabecalho = false;
}
// System.out.println("Resultado da Variavel Boolean = "+Monta_Cabecalho); //Converter Inteiro Para String
textArea1.requestFocus();
textArea1.select(Codigo_de_Pesquisa, Codigo_de_Pesquisa + Chave_Primaria.length());
posInicial = Codigo_de_Pesquisa + Chave_Primaria.length();
int quant = textArea1.getLineCount();
maxValue=quant;
ProgressBar.setMaximum(maxValue-2);
for(int i = 0; i < quant; i++){
try{
int inicio = textArea1.getLineStartOffset(i);
int fim = textArea1.getLineEndOffset(i);
final int percent = i;
// Função Para Barra de Processamento Começo
ProgressBar.setValue(percent);
// Função Para Barra de Processamento Final
String linha = textArea1.getText(inicio, fim - inicio);
// JOptionPane.showMessageDialog(null, "LINHA = " + (i + 1) + " = " + linha);
if(linha.indexOf(Chave_Segundaria.trim().toUpperCase()) == 0 && posInicial != 0){
//System.out.println("Achou uuuu ");
Cont_Lin = 0;
Cont_DJDE++;
if(Cont_DJDE == 1){
Form1 = linha.trim().substring(0);
Form1 = Form1.replaceAll("_A3" , "_A4");
}else if(Cont_DJDE == 2){
Form2 = linha.trim().substring(0);
Form2 = Form2.replaceAll("_A3" , "_A4");
}
}
if (linha.indexOf(Chave_Primaria.trim().toUpperCase()) >0){
Cont_Lin++;
if(Cont_Lin == 1){
Forms++;
}else if(Forms >= 2){
Forms = 0;
}
if(Forms == 1 && Cont_Lin == 1){
Form = Form1;
Insere_DJDE = true;
Flag = 1;
}else if(Forms == 2 && Cont_Lin == 1){
Form = Form2;
Insere_DJDE = true;
Flag = 2;
}else {
Insere_DJDE = false;
Line = 0;
Total_Line = Cont_Lin-1;
}
// System.out.println("cont_linha "+Cont_Lin);
// System.out.println("Vedadeiro ou falso "+Insere_DJDE);
// System.out.println("Formulario "+Form);
}
// ***** Abaixo a Função Já Esta Funcionando Para Remissao Em A4 Começo
if (linha.indexOf(Chave_Primaria.trim().toUpperCase()) > 0 || i < 4 && Monta_Cabecalho == true ){
// JOptionPane.showMessageDialog(null, " Cont_Lin = " + Cont_Lin +" Total_Line = " + Total_Line+" Formulario = " + Forms+" Flag = " + Flag);
// if(Total_Line > Cont_Lin){
// do {
// System.out.println("******************* Fazendo **********************");
// Line++;
// textArea2.setText(textArea2.getText()+"KKK = "+Line+"\r\n");
// }while ( Line <= Total_Line );
// }
if(Insere_DJDE == true){
textArea2.setText(textArea2.getText()+Form+"\r\n");
//System.out.println("Total_Line "+Total_Line);
}
textArea2.setText(textArea2.getText()+linha.trim().substring(0)+"\r\n");
// System.out.println(textArea2.getText()+" Flag "+Flag );
}
// ***** Acima a Função Já Esta Funcionando Para Remissao Em A4 Final
}catch(BadLocationException ex){
// possiveis erros são tratados aqui
}
}
}
}else{
JOptionPane.showMessageDialog(null, "Não Foi Inserido o Codigo Para Pesquisa", "Mensagem de Erro Verificar", JOptionPane.ERROR_MESSAGE);
}
}
}
});
botao3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent Clik){
ProgressBar.setValue(0);
if (!textArea2.getText().equals("")){
//JFileChooser fc = new JFileChooser();
JFileChooser fc = new JFileChooser("R://REMISSÕES"); // Força a Abrir em uma Pasta Determinada
if(fc.showSaveDialog(Remissao.this) != JFileChooser.APPROVE_OPTION){
return;
}
File arquivo_Saida = fc.getSelectedFile();
if(arquivo_Saida == null){
return;
}
FileWriter writer = null;
try{
writer = new FileWriter(arquivo_Saida);
writer.write(textArea2.getText());
int quant = textArea2.getLineCount();
maxValue=quant;
ProgressBar.setMaximum(maxValue-2);
for(int j = 0; j < quant; j++){
final int percent = j;
// Função Para Barra de Processamento Começo
ProgressBar.setValue(percent);
// Função Para Barra de Processamento Final
}
}catch(IOException ex){
// Possiveis erros aqui
}
finally{
if(writer != null){
try{
writer.close();
}catch (IOException x){
// Codigo de erro a ser Inserido
}
}
}
}else{
JOptionPane.showMessageDialog(null, "Não Foi Selecionado Nenhum Registro", "Mensagem de Erro Verificar", JOptionPane.ERROR_MESSAGE);
}
}
});