Gerar txt com ;

Boa tarde,

Preciso gerar um arquivo txt, gravando os dados NOME e TELEFONE no seguinte formato:

nome;telefone;
nome;telefone;
.
.
.

Cada registro em uma linha nova.

Alguém poderia me ajudar? Obrigado,

Fred

Você já sabe como gravar um arquivo txt?

Se não, leia: http://www.javapractices.com/topic/TopicAction.do?Id=42 e http://www.abbeyworkshop.com/howto/java/writeText/index.html

Se o seu problema é colocar o ponto e vírgula, é só adicionar à uma string. Por exemplo:

String nome = "João";
String telefone = "1234-5678";
String nome_e_telefone = nome + ";" + telefone + ";";

Se não for isso, avise.

Abraço.

da uma pesquisada sobre o assunto… te muito resultado por ai.

se você colocar “java escrever arquivo” (sem as aspas) no google vem uns exemplos, inclusive veio aqui pra mim no primeiro resultado um tutorial aqui mesmo do guj…

Quero gravar os nomes com dados do teclado, ou seja uma jText. Não sei bem como gravar, poderia me ajudar aqui com exemplos?

fbrigatt

Você viu os links que te passei? Seguiu a recomendação do mauricioadl?

se você colocar “java escrever arquivo” (sem as aspas) no google vem uns exemplos, inclusive veio aqui pra mim no primeiro resultado um tutorial aqui mesmo do guj…

Quando você diz JText, está dizendo um JTextField? Como você criou a aplicação? Foi no Netbeans? No Eclipse? À mão?

Para pegar o texto de um JTextField, não é complicado:

String s = JTextField1.getText();

Abraço.

Isso, JTextField.

Vou usar o Netbeans. Ainda não vi o link, vou ver agora e posto aqui, ok? Obrigado por enquanto.

Para adiantar, como faço para gravar assim:

nome;telefone;
nome;telefone;

e assim vai?

Dei uma olhada lá, como faço para usar com o JTextField?

fbrigatt
Você viu mesmo os links? Entendeu o que está neles? Conseguiu rodar o código? Conseguiu alterar o código? Testou variações?

Não é difícil se você pensar um pouco. Exemplo:

Se você usar um JButton e um JTextField:

[code]private void gravar(){
try {
FileWriter outFile = new FileWriter(args[0]);
PrintWriter out = new PrintWriter(outFile);
// Write text to file
out.println(JTextField1.getText());
out.close();
} catch (IOException e){
e.printStackTrace();
}
}

@Override
public void actionPerformed(ActionEvent e) {
// este actionperformed deve ser chamado pelo botão
gravar();
}
[/code]
Abraço.

Ok, vou testar com que tenho e posto o código que fiz com que tenho até o momento, ok?

Obrigado por hora.

Eu estava aqui fazendo revisão para a prova ocjp, e fiz um exemplo já que o nobre colega pediu, repare no argumento boolean, que foi usado para dar append, ou seja
não sobrescrever o arquivo e sim escrever em uma nova linha… repare também em algo bem importante, as classe são usadas “combinadas”, ou seja um File(Arquivo) com um FileWriter(Arquivo de Escrita) e um PrintWriter(…, lógico que as traduções ae estão estranhas, por que na verdade isso não é para traduzir… eheheh, você poderia usar um FileWriter, só que não teria o método println(), e teria que concatenar com um “\n”, percebe que as classes mais especializadas são mais direcionadas para sua necessidade, a API java.io tem cerca de 50 classes, 10 interfaces e 15 exceptions ufa… segue abaixo um exemplo simples que irá criar um txt no seu diretório raiz, e depois que você cadastrar ae o nome e o telefone, vai escrever os contatos na saída padrão, eu to mostrando para você também o método split() para “pegar” os dados separados… qualquer dúvida poste ae que terei muito prazer em respondê-lo. tente fazer você mesmo do zero, lembre de tratar valores nulos, tratar números de telefone válidos, tratar se os nomes são válidos, use “regex” para isso… ok? Segue abaixo um “exemplo” para você ter uma idéia, rode ele…

[code]import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JOptionPane;

public class File {

public static void main(String[] args) throws IOException {
	String nome = JOptionPane.showInputDialog("Entre com o telefone");
	String telefone = JOptionPane.showInputDialog("Entre com o nome");
	String linha = nome + ";" + telefone;
	String path = "teste.txt";
	java.io.File f = new java.io.File(path);
	FileWriter fw = null;
	PrintWriter pw = null;
	
	try {
		fw = new FileWriter(f, true);
		pw = new PrintWriter(fw);
	} catch (IOException e) {
		JOptionPane.showMessageDialog(null, "Falha ao criar o arquivo");
		e.printStackTrace();
		System.exit(-1);
	}
	try {
		pw.println(linha);
		pw.flush();
	}catch (Exception e) {
		JOptionPane.showMessageDialog(null, "Falha ao gravar no arquivo");
		e.printStackTrace();
		System.exit(-1);
	} 
	if (fw != null){
		fw.close();
	}
	
	if (pw != null){
		pw.close();
	}
	
	FileReader fr = new FileReader(f);
	BufferedReader br = new BufferedReader(fr);
	String linhaCorrente = null;
	String[] dados = null;
	
	while ((linhaCorrente = br.readLine())!= null) {
		dados = linhaCorrente.split(";");
		System.out.println("Nome: "+dados[0]);
		System.out.println("Telefone: "+dados[1]);
		System.out.println("====================================");
	}
	
}

}
[/code]

Caro amigo ribclauport,

Valeu mesmo pela ÓTIMA explicação. Teria como mostrar os dados gravados em uma tabela? Vc me ajudou muito com sua explicação e exemplo, poderia ajudar mais uma vez? Vou fazer o que vc me disse quanto aos tratamentos.

Percebi também que não está usando JTextField. Vou tentar eu mesmo adaptar para usar o JTextField. Só preciso mesmo da dica para mostrar na tabela os dados gravados.

Obrigado por hora,

Fred

Rapaiz eu fiz um exemplo aqui, tem algumas coisas que teriam que mudar, aliás estou lendo o arquivo duas vezes para poder obter o número de linhas do vetor…estou
colocando tudo em um main, ou seja todo o código tem que ser revisto, criado métodos especificos para ler arquivo… enfim toda a parte de orientação de objtos…
mas já que é para dar uma idéia vamos lá.

Peguei o tutorial, o qual vou colocar o link abaixo e fiz umas alterações, e rodou aqui, lembrando que trabalhei dois anos com web, e não sou especialista em swing…
aliás nem sei swing, sendo assim sei que a "tabela" tem um monte de pormenores que as pessoas experientes dizem a respeito, do tipo não use tal model…ou àquele… mas vamos lá, abaixo segue o link e o codigo.

http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/components/SimpleTableDemoProject/src/components/SimpleTableDemo.java

[code]/*

  • Copyright © 1995, 2008, Oracle and/or its affiliates. All rights reserved.
  • Redistribution and use in source and binary forms, with or without
  • modification, are permitted provided that the following conditions
  • are met:
    • Redistributions of source code must retain the above copyright
  • notice, this list of conditions and the following disclaimer.
    
    • Redistributions in binary form must reproduce the above copyright
  • notice, this list of conditions and the following disclaimer in the
    
  • documentation and/or other materials provided with the distribution.
    
    • Neither the name of Oracle or the names of its
  • contributors may be used to endorse or promote products derived
    
  • from this software without specific prior written permission.
    
  • THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  • IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  • THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  • PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  • CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  • EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  • PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  • PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  • LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  • NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  • SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    */

/*

  • SimpleTableDemo.java requires no other files.
    */

import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class SimpleTableDemo extends JPanel {
/**
*
*/
private static final long serialVersionUID = 5477330511125402029L;
private boolean DEBUG = false;

public SimpleTableDemo() throws IOException {
	
   super(new GridLayout(1,0));

    String[] columnNames = {"Nome",
                            "Telefone"};
    Object[][] data = null;
    String path = "teste.txt";  
    java.io.File f = new java.io.File(path);  
    FileWriter fw = null;  
    PrintWriter pw = null;  
    String nome = JOptionPane.showInputDialog("Entre com o telefone");  
    String telefone = JOptionPane.showInputDialog("Entre com o nome");  
    String linha = nome + ";" + telefone;  
    
    try {  
        fw = new FileWriter(f, true);  
        pw = new PrintWriter(fw);  
    } catch (IOException e) {  
        JOptionPane.showMessageDialog(null, "Falha ao criar o arquivo");  
        e.printStackTrace();  
        System.exit(-1);  
    }  
    try {  
        pw.println(linha);  
        pw.flush();  
    }catch (Exception e) {  
        JOptionPane.showMessageDialog(null, "Falha ao gravar no arquivo");  
        e.printStackTrace();  
        System.exit(-1);  
    }   
    if (fw != null){  
        fw.close();  
    }  
      
    if (pw != null){  
        pw.close();  
    }  
    
    FileReader fr = new FileReader(f);  
    FileReader fr1 = new FileReader(f);  
    BufferedReader br = new BufferedReader(fr1);  
    BufferedReader brCont = new BufferedReader(fr);
    String linhaCorrente = null;  
    String[] dados = null;
    int cont = 0;
   
    while ((linhaCorrente = brCont.readLine())!= null) {  
    	cont++;
    }
    
    data = new Object[cont][2];
    int i = 0;
	int j = 0;
    while ((linhaCorrente = br.readLine())!= null) {  
        dados = linhaCorrente.split(";");  
        System.out.println("Nome: "+dados[0]); 
        System.out.println("Telefone: "+dados[1]);
        data[i][j]=dados[0];
        data[i][j+1]=dados[1];
        i=i+1;
        System.out.println("===================================="); 
    }  

    final JTable table = new JTable(data, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    table.setFillsViewportHeight(true);

    if (DEBUG) {
        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                printDebugData(table);
            }
        });
    }

    //Create the scroll pane and add the table to it.
    JScrollPane scrollPane = new JScrollPane(table);

    //Add the scroll pane to this panel.
    add(scrollPane);
}

private void printDebugData(JTable table) {
    int numRows = table.getRowCount();
    int numCols = table.getColumnCount();
    javax.swing.table.TableModel model = table.getModel();

    System.out.println("Value of data: ");
    for (int i=0; i < numRows; i++) {
        System.out.print("    row " + i + ":");
        for (int j=0; j < numCols; j++) {
            System.out.print("  " + model.getValueAt(i, j));
        }
        System.out.println();
    }
    System.out.println("--------------------------");
}

/**
 * Create the GUI and show it.  For thread safety,
 * this method should be invoked from the
 * event-dispatching thread.
 * @throws IOException 
 */
private static void createAndShowGUI() throws IOException {
    //Create and set up the window.
    JFrame frame = new JFrame("SimpleTableDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Create and set up the content pane.
    SimpleTableDemo newContentPane = new SimpleTableDemo();
    newContentPane.setOpaque(true); //content panes must be opaque
    frame.setContentPane(newContentPane);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
   
            try {
				createAndShowGUI();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
    
}

[/code]

fbrigatt
acho que o seu problema principal é entender sobre JAVA.
o que o amigo de cima falou no primeiro exemplo foi com JOptionPane, paineis prontos!
para voce usar jTextField voce terá que ter um jFrame ou jInternalFrame, sei lá.
procure pesqusiar sobre o assunto, por exemplo, coloque “jogar dados jtable” sem as aspas no google
tem muitos exemplos, com banco de dados, com arrayList, enfim!

[quote]fbrigatt
acho que o seu problema principal é entender sobre JAVA.[/quote]

A Maturidade vem com o tempo, o nobre colega pode estar começando neste mundo “cruel”, e talvez ainda não tenha o perfil de pesquisa, me lembro quando comecei,
o “classpath” era um monstro, dava pau nos progamas “oi mundo”, e se o amigo soubesse java, e dominasse a tecnologia, não estaria em um forum de java básico.
Entender sobre java, acredito que é bem difícil, nos estamos tentando entender o básico da tecnologia, acredito que as palavras podem ser muito ruins para as pessoas quando não ditas com cuidado, no meu primeiro emprego meu chefe me disse que eu não tinha jeito para progamação, por que eu perguntava demais…
isso foi muito difícil para mim, e até hoje eu me lembro das duras palavras, no começo é difícil, e as vezes não conseguimos mesmo nem rodar um progama simples, somos bebês que estamos tentando falar, mas não saem palavras, e as palavras são construídas aos poucos, com o tempo não precisamos mais emitar os adultos, montamos nossas frases… criamos poemas… criamos palavras…

Somos profissionais de TI, e não precisamos ser super-homens, vamos perguntar, vamos entender sobre java, todos juntos.

Pois não somos o James Gosling.

ribclauport,

Valeu pela ajuda, graças a pessoas como vc, que não escondem o que sabem para dividir com os outros, é que os forums sobrevivem. Como você mesmo disse, só que em outras palavras: Ninguém nasce sabendo.

É só copiar esse código que postou no notepad e executar?

Obrigado por hora,

Fred

Sim, cole no notepad e execute, você está fazendo tudo por meio de “java” e “javac”?

Utilize a classe StringBuilder para concatenar Strings, pois é o jeito mais performático de trabalhar com concatenação do usando o operador “+” e essa diferença você vai perceber muito quando o processamento for muito grande.

Veja um exemplo:

// Instanciando....
StringBuilder builder = new StringBuilder();
// Concatenando...
builder.append("String1 ").append("String2");
// Gerando uma String
System.out.println(builder.toString());

Uso o NetBeans.

Uso o NetBeans.

Uso o NetBeans.

Att,

Fred

É so colocar em um pacote e executar normalmente pelo neatbeans…