Arquivos de texto

6 respostas
P

Olá guj,

Meu problema é o seguinte:
Possuo um arquivo com duas linhas e preciso obter os dados do arquivo, escrevi o seguinte método para fazer isto:

public void getConfiguracoes(){

try{

configFile =  new File(c:/simaq/cnf/simaq.conf);

BufferedReader bufRdr = new BufferedReader(new FileReader(configFile));

String line = null;

int count = 0;

while((line = bufRdr.readLine())!= null){
if (count == 0){
               String servidor = line;
               count++;
               System.out.println(servidor);
           }
           
           if (count == 1){
               String porta = line;
               count++;
               System.out.println(porta);
           }
        }
    }catch(IOException e){
        System.out.println(e);
    }
}

O problema é que não funcionou, servidor e porta estão recebendo a mesma linha do arquivo, a linha 1. Como faço para que a String servidor receba a linha 1 e a String porta receba a linha 2?

Outras soluções também são bem vindas.

6 Respostas

_fs

Fazer assim bastaria cara

try
		{
			File f = new File(
					"path/test.txt" );
			BufferedReader br = new BufferedReader( new FileReader( f ) );

			String server = br.readLine();
			String port = br.readLine();

			br.close();

			System.out.println( "server: " + server + "\nport: " + port );
		}
		catch( Exception e )
		{
			e.printStackTrace();
		}

E creio que para fazer isto um arquivo .properties resolveria melhor o seu problema cara.

P

obrigado

P

Socorro!!!
Guj estou usando um arquivo .properties conforme sugerido, porém não consigo alterar os dados do arquivo com o método abaixo. Se alguém puder me ajudar desde já agradeço.

public void setConfiguracoes(String server,String port){

try{

FileInputStream fis = null;

Properties props = new Properties();

configFile =  new File(c:/simaq/cnf/simaq.properties);

fis = new FileInputStream(configFile);

props.load(fis);

fis.close();

props.setProperty(servidor,server);

props.setProperty(porta,port);

}catch(FileNotFoundException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}

}

o arquivo simaq.properties:

servidor = 10.12.5.29
porta = 1099

_fs

Não é bem assim para gravar no arquivo
http://java.sun.com/docs/books/tutorial/essential/attributes/properties.html

dica: quando for postar código, coloque-o entre as tags [ code]seucodigo[ /code], assim ele ficará endentado.

p5f8
pmuniz:
Olá guj,

Meu problema é o seguinte:
Possuo um arquivo com duas linhas e preciso obter os dados do arquivo, escrevi o seguinte método para fazer isto:

public void getConfiguracoes(){
try{
configFile = new File("c:/simaq/cnf/simaq.conf");
BufferedReader bufRdr = new BufferedReader(new FileReader(configFile));
String line = null;
int count = 0;
while((line = bufRdr.readLine())!= null){

if (count == 0){
String servidor = line;
count++;
System.out.println(servidor);
}

if (count == 1){
String porta = line;
count++;
System.out.println(porta);
}
}
}catch(IOException e){
System.out.println(e);
}
}

O problema é que não funcionou, servidor e porta estão recebendo a mesma linha do arquivo, a linha 1. Como faço para que a String servidor receba a linha 1 e a String porta receba a linha 2?

Outras soluções também são bem vindas.

Olá pmuniz,

o erro no código está no seguinte trecho:
int count = 0;
            while((line = bufRdr.readLine())!= null){
             
               if (count == 0){
                   String servidor = line;
                   count++;
                   System.out.println(servidor);
               }
               
               if (count == 1){
                   String porta = line;
                   count++;
                   System.out.println(porta);
               }
            }
basta colocar o else:
int count = 0;
            while((line = bufRdr.readLine())!= null){
             
               if (count == 0){
                   String servidor = line;
                   count++;
                   System.out.println(servidor);
               }
               else {
                    if (count == 1){
                        String porta = line;
                        count++;
                        System.out.println(porta);
                    }
              }
            }

claro.. o amigo LIPE sugeriu uma ótima dica, utilizar properties. como eu não conhecia o properties.. e estou ainda sem sono... hehehe
lá vai...

só uma observacao crie um arquivo configuracao.ini vazio antes de executar este programa.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

/*
 * Created on 15/02/2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Teste
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Testandoproperties {

	public static void main(String[] args) throws FileNotFoundException, IOException {
		
		Properties arquivoDeConfiguracao = new Properties();
		arquivoDeConfiguracao.load(new FileInputStream("configuracao.ini"));
		
		String servidor = arquivoDeConfiguracao.getProperty("servidor");
		String nomedobanco = arquivoDeConfiguracao.getProperty("nome do banco");
		
		System.out.println("servidor =" + servidor);
		System.out.println("nome do banco =" + nomedobanco);
		
		arquivoDeConfiguracao.setProperty("servidor","nome do servidor");
		arquivoDeConfiguracao.setProperty("nome do banco","bancodedadosmysql");
		
		// arquivodeconfiguracao.list(System.out);
		
		arquivoDeConfiguracao.store(new FileOutputStream("configuracao.ini"), 
									"arquivo de configuracao configuracao.ini");
	}
}

e este é o conteúdo do arquivo configuracao.ini, após a execução do programa:

#arquivo de configuracao configuracao.ini
#Tue Feb 15 02:55:30 BRST 2005
nome\ do\ banco=bancodedadosmysql
servidor=nome do servidor
P

Valeu,

Obrigado a todos.

Criado 15 de fevereiro de 2005
Ultima resposta 16 de fev. de 2005
Respostas 6
Participantes 3