Gravar em forma de arquivos binários

4 respostas
oxfish

Gostaria de um pequeno exemplo, se possível de um código q solicite o nome e a idade de uma pessoa e grave isso em forma de arquivos binários…mas q tb seja possível posteriormente visualizar o q foi digitado. Estou estudando arquivos e isso me ajudaria muito na compreensão.
Valew!

4 Respostas

davidbuzatto

Mas pq? Num pode ser texto? Vc pode serializar um objeto se quizer… Da uma pesquisa em serialização… Ja postei algo aqui no fórum uma vez… Falow!

oxfish

Com certeza poderia ser texto, se o zé roela do meu professor não tivesse pedido para gravar isso em forma de árquivos binários.

davidbuzatto
import java.io.*;
import java.util.*;

public class Teste {
	
	public static void main( String[] args ) {
		
		try {
			
			int opc = 0;
			
			Scanner scan = new Scanner( System.in );
			String nomeDoArquivo;
			String nome;
			int idade;
			Pessoa p;
					    
			while ( opc != 3 ) {
				
				System.out.println( "Escolha a opção: " );
				System.out.println( "1 - Gravar" );
				System.out.println( "2 - Ler" );
				System.out.println( "3 - Sair" );
				
				opc = scan.nextInt();
			
				switch ( opc ) {
					
					case 1:
					    
					    System.out.println( "Entre com o nome do arquivo:" );
					    nomeDoArquivo = scan.next();
					    
					    System.out.println( "Entre com o nome da pessoa:" );
					    nome = scan.next();
					    
					    System.out.println( "Entre com a idade da pessoa:" );
					    idade = scan.nextInt();
					    
						ObjectOutputStream objOut = new ObjectOutputStream(
							new FileOutputStream( new File( nomeDoArquivo ) ) );
							
						p = new Pessoa();
						p.setNome( nome );
						p.setIdade( idade );
						
						objOut.writeObject( p );
						objOut.flush();
						objOut.close();
						
						System.out.println( "Arquivo gerado com sucesso!" );
						
						break;
						
					case 2:
					    
					    System.out.println( "Entre com o nome do arquivo:" );
					    nomeDoArquivo = scan.next();
					    
						ObjectInputStream objInp = new ObjectInputStream(
							new FileInputStream( new File( nomeDoArquivo ) ) );
							
						p = ( Pessoa ) objInp.readObject();
						
						System.out.println( "Nome: " + p.getNome() );
						System.out.println( "Idade: " + p.getIdade() );
						
						objInp.close();
						break;
					
					case 3:
					
						break;
					
					default:
						System.out.println( "Opção incorreta." );
						break;
					
				}
				
			}
			
		} catch ( IOException exc ) {
			
			System.out.println( "Erro" );
			exc.printStackTrace();
			
		} catch ( ClassNotFoundException exc ) {
			
			System.out.println( "Erro" );
			exc.printStackTrace();
			
		}
		
	}
	
}

class Pessoa implements Serializable {
	
	private String nome;
	private int idade;
	
	public void setNome( String nome ) {
		
		this.nome = nome;
		
	}
	
	public String getNome() {
		
		return nome;
		
	}
	
	public void setIdade( int idade ) {
		
		this.idade = idade;
		
	}
	
	public int getIdade() {
		
		return idade;
		
	}
	
}

Não sei se a gravação de um objeto serializável é considerada com obinário... Todo caso esse é o código básico, vc pode melhorar ele.

Falow!

oxfish

valew cara, com certeza já irá ajudar bastante… vou mexer nele e qquer coisa posto aqui novamente…

Criado 23 de abril de 2007
Ultima resposta 29 de abr. de 2007
Respostas 4
Participantes 2