Conforme pedido, estou enviado o codigo...

***************************************************************
        .
        .       
        .
   public static class ArqSaida extends PrintWriter {
      private String _nome;

      public ArqSaida(String nom) throws IOException {
         super(new FileWriter(nom));
         _nome = nom;
      }

      public int tamLinha(String linha) {
         return (linha.length());
      }

      public String lerNome() {
         return _nome;
      }

      public static String fmtInteiro (String exp, int tam) {
         int opcao;
         String strformat;

         strformat = exp;
         if (tam > exp.length()) {
            opcao = tam - exp.length();
            for (int i=0 ; i<opcao ; i++) strformat = '0' + strformat;
         } //fim do if
         else {
            strformat = exp.substring(0,tam);
         }
         return strformat;
      } //fim do metodo fmtInteiro

      public static String fmtDecimal (String exp, int tam) {
         int opcao;
         String strformat;

         strformat = exp;
         if (tam > exp.length()) {
            opcao = tam - exp.length();
            for (int i=0 ; i<opcao ; i++) strformat = strformat + '0';
         } //fim do if
         else {
            strformat = exp.substring(0,tam);
         }
         return strformat;
      } //fim do metodo fmtDecimal

   }//fim da classe ArqSaida


   public static class ArqEntrada extends BufferedReader {
      private String _nome;

      public ArqEntrada(String nom) throws FileNotFoundException {
         super (new FileReader(nom));
         _nome = nom;
      }

      public String lerNome() {
         return _nome;
      }

      public String lerLinha() throws IOException {
         return this.readLine();
      }

      public String lerLinha(int pos) throws IOException {
         String teste;

         for (int i=1 ; i<pos ; i++) {
            teste = this.readLine();
         }
         return this.readLine();
      }

      public static String subLinha(String exp, int col, char sep) {
         int i;
         int nrcampo;
         int pos0;
         int pos1;

         i = 0;
         nrcampo = 1;
         pos0 = 0;
         pos1 = 0;
         if (exp!=null) {
            while (nrcampo<col) {
               pos0 = exp.indexOf(sep,i);
               i = pos0 + 1;
               nrcampo++;
            }
            pos1 = exp.indexOf(sep,i);
            if (pos0==0) {
               return exp.substring(0,pos1);
            }
            else if (pos1==-1) {
               return exp.substring(pos0+1,exp.length());
            }
            else {
               return exp.substring(pos0+1, pos1);
            }
         }
         else {
            return exp;
         }
      }//fim do metodo subLinha

      public static boolean existe (String nom) {
         File arq = new File(nom);
         if (arq.exists()) return true;
         else return false;
      }//fim do metodo Existe

   }//fim da classe ArqEntrada


   public static void main (String[] args) {

      try {

         final String pathentrada = "";
         final String pathsaida = "";
         final String pathferiado = "";
         final String pathlog = "";
         final String arqfatortr = "ArquivoGrande1";
         final String arqfatortbf = "ArquivoGrande2";
         final String arqferiado = "ArqDatas";
         final String arqsaida = "Fator";
         
         /*********** Definições do layout do arquivo de saída 
***********/
         final String espaco = " ";
         final int tamint = 5;
         final int tamdec = 12;
         final int tamdu = 3;
         final int tamreg = 9;

         final String filler = "GAPF951D";
         final int nrespacoreg = 53;

         final String lowvalue = "000";
         final String nrremessa = "00000";
         final int nrespacohdr = 37;
   
         final String cdiec_tr = "00006";
         final String cdiec_tbf = "00024";
   
         final String highvalue = "999";
         final String qtdreg = Integer.toString(Array.getLength(args));
         final int nrespacotrl = 41;
         /**************************************************************
**/

         String strlinha1;
         String strlinha2;
         String datastr;
         String fator1;
         String fator2;
         String strinteiro;
         String strdecimal;

         float taxa;
         float ftout;

         Float ft1;
         Float ft2;

         int nrdias;
         int du;
         int nrlinf1;
         int nrlinf2;
         int dtano1;
         int dtmes1;
         int dtdia1;
         int dtano2;
         int dtmes2;
         int dtdia2;

         GregorianCalendar dataf1 = new GregorianCalendar();
         GregorianCalendar dataf2 = new GregorianCalendar();

         GregorianCalendar dataatual = new GregorianCalendar();

         /************************* definicao do nome do arquivo de log 
*******************************/
         Date datalog = new Date();
         SimpleDateFormat fmtdatalog = new SimpleDateFormat
("yyyyMMdd_hhmmss");
         final String arqlog = "Log" + fmtdatalog.format(datalog) 
+ ".txt";
         /**************************************************************
******************************/

         ArqEntrada arqin1;

         ArqSaida arqout;
         ArqSaida arqerro;

         ArqEntrada arquivofer = new ArqEntrada(pathentrada + 
arqferiado);
         CalcData calcdt = new CalcData(arquivofer);

         arqout = new ArqSaida(pathsaida + arqsaida);
         arqerro = new ArqSaida(pathlog + arqlog);

         /*********** imprimindo o lay out do arquivo de saida 
**************/
         arqout.print(filler);
         for (int e=1 ; e<=nrespacoreg ; e++) arqout.print(espaco);

         arqout.print(lowvalue);
         arqout.print('0' + CalcData.strDataAMD(dataatual));
         arqout.print(nrremessa);
         for (int e=1 ; e<=nrespacohdr ; e++) arqout.print(espaco);
         /**************************************************************
*****/

         for (int n=0 ; n<Array.getLength(args) ; n++) {

         if (args[n].compareTo("ftr")==0) {

            if (!ArqEntrada.existe(pathentrada + arqfatortr)) {
               datalog = new Date();
               fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
               arqerro.print(fmtdatalog.format(datalog) + " - ");
               arqerro.println("ERRO - Arquivo de entrada de fator TR 
não existe.");
            }
            else {

               /*********** impressao na tela 
**************************************/
               System.out.println("#################### FTR 
####################");
               datalog = new Date();
               fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
               System.out.println(fmtdatalog.format(datalog));
               /********************************************************
***********/

               /************ impressao no arquivo de log 
***************************/
               arqerro.println("#################### FTR 
####################");
               datalog = new Date();
               fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
               arqerro.println(fmtdatalog.format(datalog));
               /********************************************************
***********/

               arqin1 = new ArqEntrada(pathentrada + arqfatortr);
               nrlinf1 = 1;
               nrlinf2 = 31;
               strlinha1 = arqin1.lerLinha();
               strlinha2 = arqin1.lerLinha(nrlinf2);
               arqin1.close(); 
               while (strlinha2!=null) {

                  datastr = ArqEntrada.subLinha(strlinha1,1,',');
                  fator1 = ArqEntrada.subLinha(strlinha1,2,',');
                  dtano1 = Integer.parseInt(ArqEntrada.subLinha
(datastr,1,'/'));
                  dtmes1 = Integer.parseInt(ArqEntrada.subLinha
(datastr,2,'/'));
                  dtdia1 = Integer.parseInt(ArqEntrada.subLinha
(datastr,3,'/'));

                  dataf1.set(dtano1,(dtmes1-1),dtdia1);
                     
                  datastr = ArqEntrada.subLinha(strlinha2,1,',');
                  fator2 = ArqEntrada.subLinha(strlinha2,2,',');
                  dtano2 = Integer.parseInt(ArqEntrada.subLinha
(datastr,1,'/'));
                  dtmes2 = Integer.parseInt(ArqEntrada.subLinha
(datastr,2,'/'));
                  dtdia2 = Integer.parseInt(ArqEntrada.subLinha
(datastr,3,'/'));

                  dataf2.set(dtano2,(dtmes2-1),dtdia2);

                  ft1 = new Float(fator1);
                  ft2 = new Float(fator2);
                         
                  taxa = ((ft2.floatValue() / ft1.floatValue()) - 1);

                  ftout = ft2.floatValue();

                  du = calcdt.CalcDU(dataf1,dataf2);

                  nrlinf1++; 
                  arqin1 = new ArqEntrada(pathentrada + arqfatortr);
                  strlinha1 = arqin1.lerLinha(nrlinf1);
                  strlinha2 = arqin1.lerLinha(nrlinf2);
                                 arqin1.close();

                  /********** impressao dos resultados na tela 
***************************************/
                  System.out.print("# " + cdiec_tr + " ");
                  System.out.print(CalcData.strDataAMD(dataf2) + " ");
                  System.out.print(taxa + " ");
                  System.out.print(ftout + " ");
                  System.out.println(du + " #");
                  /*****************************************************
******************************/

                  /********** impressao dos resultados no arquivo de 
log *****************************/
                  arqerro.print("# " + cdiec_tr + " ");
                  arqerro.print(CalcData.strDataAMD(dataf2) + " ");
                  arqerro.print(taxa + " ");
                  arqerro.print(ftout + " ");
                  arqerro.println(du + " #");
                  /*****************************************************
******************************/

                  /********** impressao dos resultados no arquivo 
CurvasFator.csv ********************/
                  arqout.print(cdiec_tr);
                  arqout.print('0' + CalcData.strDataAMD(dataf2));
                  if (taxa<0) { 
                     arqout.print('D');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(taxa*(-1)),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(taxa*(-1)),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  else { 
                     arqout.print('C');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(taxa),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(taxa),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  if (ft2.floatValue()<0) { 
                     arqout.print('D');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(ftout*(-1)),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(ftout*(-1)),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  else { arqout.print('C');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(ftout),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(ftout),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  arqout.print(ArqSaida.fmtInteiro(Integer.toString
(du),tamdu));
                  /*****************************************************
*****************************/
               } //fim do while
            } //fim do if tr apos verificar existencia do arquivo
         } //fim do if para tr

         else if (args[n].compareTo("ftbf")==0) {

            if (!ArqEntrada.existe(pathentrada + arqfatortr)) {
               datalog = new Date();
               fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
               arqerro.print(fmtdatalog.format(datalog) + " - ");
               arqerro.println("ERRO - Arquivo de entrada de fator TBF 
não existe.");
            }
            else {

               /*********** impressao na tela 
**************************************/
               System.out.println("#################### FTBF 
####################");
               datalog = new Date();
               fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
               System.out.println(fmtdatalog.format(datalog));
               /********************************************************
***********/

               /************ impressao no arquivo de log 
***************************/
               arqerro.println("#################### FTBF 
####################");
               datalog = new Date();
               fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
               arqerro.println(fmtdatalog.format(datalog));
               /********************************************************
***********/

               arqin1 = new ArqEntrada(pathentrada + arqfatortbf);
               nrlinf1 = 1;
               nrlinf2 = 31;
               strlinha1 = arqin1.lerLinha();
               strlinha2 = arqin1.lerLinha(nrlinf2);
               arqin1.close();
               while (strlinha2!=null) {

                  datastr = ArqEntrada.subLinha(strlinha1,1,',');
                  fator1 = ArqEntrada.subLinha(strlinha1,2,',');
                  dtano1 = Integer.parseInt(ArqEntrada.subLinha
(datastr,1,'/'));
                  dtmes1 = Integer.parseInt(ArqEntrada.subLinha
(datastr,2,'/'));
                  dtdia1 = Integer.parseInt(ArqEntrada.subLinha
(datastr,3,'/'));

                  dataf1.set(dtano1,(dtmes1-1),dtdia1);
                    
                  datastr = ArqEntrada.subLinha(strlinha2,1,',');
                  fator2 = ArqEntrada.subLinha(strlinha2,2,',');
                  dtano2 = Integer.parseInt(ArqEntrada.subLinha
(datastr,1,'/'));
                  dtmes2 = Integer.parseInt(ArqEntrada.subLinha
(datastr,2,'/'));
                  dtdia2 = Integer.parseInt(ArqEntrada.subLinha
(datastr,3,'/'));

                  dataf2.set(dtano2,(dtmes2-1),dtdia2);

                  ft1 = new Float(fator1);
                  ft2 = new Float(fator2);
                              
                  taxa = ((ft2.floatValue() / ft1.floatValue()) - 1);

                  ftout = ft2.floatValue();

                  du = calcdt.CalcDU(dataf1,dataf2);

                  nrlinf1++; 
                  arqin1 = new ArqEntrada(pathentrada + arqfatortbf);
                  strlinha1 = arqin1.lerLinha(nrlinf1);
                  strlinha2 = arqin1.lerLinha(nrlinf2);
                  arqin1.close();
               
                  /********** impressao dos resultados na tela 
***************************************/
                  System.out.print("# " + cdiec_tbf + " ");
                  System.out.print(CalcData.strDataAMD(dataf2) + " ");
                  System.out.print(taxa + " ");
                  System.out.print(ftout + " ");
                  System.out.println(du + " #");
                  /*****************************************************
******************************/

                  /********** impressao dos resultados no arquivo de 
log *****************************/
                  arqerro.print("# " + cdiec_tbf + " ");
                  arqerro.print(CalcData.strDataAMD(dataf2) + " ");
                  arqerro.print(taxa + " ");
                  arqerro.print(ftout + " ");
                  arqerro.println(du + " #");
                  /*****************************************************
******************************/

                  /********** impressao dos detalhes no arquivo de 
saida *****************************/
                  arqout.print(cdiec_tbf);
                  arqout.print('0' + CalcData.strDataAMD(dataf2));
                  if (taxa<0) { 
                     arqout.print('D');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(taxa*(-1)),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(taxa*(-1)),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  else { 
                     arqout.print('C');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(taxa),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(taxa),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  if (ft2.floatValue()<0) { 
                     arqout.print('D');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(ftout*(-1)),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(ftout*(-1)),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  else { arqout.print('C');
                     strinteiro = ArqEntrada.subLinha(Float.toString
(ftout),1,'.');
                     strinteiro = ArqSaida.fmtInteiro
(strinteiro,tamint);
                     strdecimal = ArqEntrada.subLinha(Float.toString
(ftout),2,'.');
                     strdecimal = ArqSaida.fmtDecimal
(strdecimal,tamdec);
                     arqout.print(strinteiro + strdecimal); 
                  }
                  arqout.print(ArqSaida.fmtInteiro(Integer.toString
(du),tamdu));
                  /*****************************************************
*****************************/
               } //fim do while
            } //fim do if tbf apos verificar existencia de arquivo
         } //fim do if para tbf
         } //fim do for geral

         /********** impressao do final do arquivo CurvasFator.csv 
**********/
         arqout.print(highvalue);
         arqout.print(ArqSaida.fmtInteiro(qtdreg,tamreg));
         for (int e=1 ; e<=nrespacotrl ; e++) arqout.print(espaco);
         /**************************************************************
*****/

         /********** impressao do resultado em tela 
*************************/
         System.out.println("# Quantidade de curvas: " + qtdreg + " #");
         datalog = new Date();
         fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
         System.out.println(fmtdatalog.format(datalog));
         System.out.println("#################### FIM 
####################");
         /**************************************************************
*****/

         /********** impressao do resultado no arquivo de log 
***************/
         arqerro.println("# Quantidade de curvas: " + qtdreg + " #");
         datalog = new Date();
         fmtdatalog = new SimpleDateFormat("dd/MM/yyyy_hh:mm:ss");
         arqerro.println(fmtdatalog.format(datalog));
         arqerro.println("#################### FIM 
####################");
         /**************************************************************
*****/

         arqout.close();
         arqerro.close();

      } //fim do try
      catch(FileNotFoundException e2) {System.out.println("ERRO " + e2 
+ " - Arquivo não localizado!");}      
      catch(IOException e1) {System.out.println("ERRO " + e1 + " - 
Arquivo não localizado!");}
   } //fim da main
} //fim da classe fator

************************************************************************

Em Tue, 5 Jun 2001 17:52:07 -0300 Luciano Dias Lazari Escreveu:

> pode enviar um exemplo do código usado???
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: terça-feira, 5 de junho de 2001 14:02
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED];
> [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: [java-list] Manipulação de arquivo texto muito grande
> 
> 
> 
>      Estou com um problema quando executo um programa em java no 
> ambiente Unix - Solaris. Até agora não conseguir encontrar uma 
solução 
> e as que me indicaram não funcionaram. O problema é o seguinte: estou 
> manipulando um arquivo texto muito grando em ambiente Unix com um 
> programa java 1.1.3. O programa abre o arquivo, mas quando chega na 
> linha 60 o programa simplesmente trava. Já tentei aumentar o heap com 
> as opções -ms e -mx, mas a classe não executa com essas opções. Em 
> ambiente Windows, o programa executa normalmente sem precisar das 
> opções -mx e -ms. Se alguém puder me ajudar eu agredeço.
> 
> Obrigado.
> Adriano Paz
> 
>  
> 
> 
> 
> MailBR - O e-mail do Brasil -- http://www.mailbr.com.br
> Faça já o seu. É gratuito!!!
> 
> ------------------------------ LISTA SOUJAVA -------------------------
---
> 
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para java-list-
[EMAIL PROTECTED]
> 
> ----------------------------------------------------------------------
---





MailBR - O e-mail do Brasil -- http://www.mailbr.com.br
Faça já o seu. É gratuito!!!

------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a