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]
-------------------------------------------------------------------------