Remover linha de arquivo texto

9 respostas
K

ola pessoal.
eu sou novo no forum, e preciso de uma pequena ajuda.

a algum tempo venho desenvolvendo um programa de cadastro de cheque.

o programa funciona assim:

1 - recebe os dados por uma janela grafica.
2 - transfere os dados para um arquivo texto.

o arquivo texto deve ser assim:

1;C;25/12/2007;Carlos Tadeu;fortaleza;CE
9;fim

e devo apagar a linha final.
descobri como calcular a ultima linha

BufferedWriter out = new BufferedWriter(new FileWriter(
“arquivo.txt”, true)
);

File file = new File("arquivo.txt");
				LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file));
				
				while(lineNumberReader.readLine() != null); 
				 lineNumberReader.close(); 
				 System.out.println(lineNumberReader.getLineNumber());

eu queria saber se voces tem aluma ideia de como remover a linha.

eu queria que fosse mais ou menos assim:

remove(lineNumberReader.getLineNumber());

lineNumberReader.getLineNumber() indica a ultima linha.

9 Respostas

davidbuzatto

Grave um arquivo novo com todo o conteúdo e pule a última linha.

Até mais!

K

ele funciona assim:

imprime o q eu preciso, pula uma linha e escreve “9;fim”

eu gostaria que pudesse dar um if para testar se ja possuia um “9;fim”
SE tiver ele comessa a sobreescrever logo na linha q eu nao quero e ai escrevia ele de novo no fim.

como posso pular?

K

eu nao entendi direito.

preciso que ele toda vez que clica no botoa OK ele procure a linha “9;fim” e a remova depois insira a linha que
preciso e debaixo coloque “9;fim” de novo.

nao tem como eu quando for gravar a linha grave emcima da ultima(9;fim)?

alguem me ajuda.

jgbt

karlostadeu:
eu nao entendi direito.

preciso que ele toda vez que clica no botoa OK ele procure a linha “9;fim” e a remova depois insira a linha que
preciso e debaixo coloque “9;fim” de novo.

nao tem como eu quando for gravar a linha grave emcima da ultima(9;fim)?

alguem me ajuda.


como ja foi respondido, leia o arquivo original, retire/inclua o conteudo necessario, e grave um novo arquivo.
de uma busca no forum que vc vai achar varios exemplos de como fazer.

[]´s

K

eu ja tenho esse while:

File file = new File(“arquivo.txt”);
LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file));

while(lineNumberReader.readLine() != null);     
				lineNumberReader.close();

tenho como alteralo para capturar todas as linhas exetoa a ultima e gravar em arquivo texto?

K

nao axei exemplos

me indiquem algum que remova a ultima linha.

por favor.
to doi atras disso.
e para um banco de dados em TXT.

acdesouza

Era isso aqui que você queria:

File file = new File("arquivo.txt");
LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file));

while(lineNumberReader.readLine() != null){
    String linhaAtual = lineNumberReader.readLine();
    if( "9;fim".equals(linhaAtual) ){
        //Sobrescreve a última linha do aquivo.
    }
}
//Adicionar o 9;fim do arquivo.

lineNumberReader.close();

???

K

nao funcionou.

K

tem tei fazer mais nao consequi.

[quote]package finalizado;
//Generated by GuiGenie - Copyright © 2004 Mario Awad.
//Home Page http://guigenie.cjb.net - Check often for new versions!

import java.awt.<em>;

import java.awt.event.</em>;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.LineNumberReader;

import java.io.PrintStream;

import java.io.RandomAccessFile;

import java.text.ParseException;
import javax.swing.<em>;

import javax.swing.event.</em>;

import javax.swing.text.AttributeSet;

import javax.swing.text.BadLocationException;

import javax.swing.text.MaskFormatter;

import javax.swing.text.PlainDocument;
public class painel extends JPanel {

private JButton Incluir;

private JLabel jcomp2;

private JTextField SAC;

private JLabel jcomp4;

private JComboBox jcomp5;

private JLabel jcomp6;

private JFormattedTextField CGC;

private JLabel jcomp8;

private JTextField BC;

private JLabel jcomp10;

private JTextField CH;

private JLabel jcomp12;

private JTextField R;

private JLabel jcomp14;

private JFormattedTextField DATA;

private JButton sair;

private JButton editar;

private MaskFormatter ftmData;

private MaskFormatter ftmcgc;

private JComboBox estado;

private JLabel jcomp7;

private JLabel jcomp9;

private JTextField cidade;
public painel() throws ParseException {
	// construct components
	String[] jcomp5Items = { "C", "N", "D" };
	String[] estadoItems = {"AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"};

	// construct components
	Incluir = new JButton("Incluir");
	jcomp2 = new JLabel("Sacado:");
	SAC = new JTextField(5);
	jcomp4 = new JLabel("Tipo de Titulo");
	jcomp5 = new JComboBox(jcomp5Items);
	jcomp6 = new JLabel("CPF/CNPJ");
	CGC = new JFormattedTextField();
	jcomp8 = new JLabel("Banco");
	BC = new JTextField(5);
	jcomp10 = new JLabel("DOC");
	CH = new JTextField(5);
	jcomp12 = new JLabel("Valor");
	R = new JFormattedTextField();
	jcomp14 = new JLabel("Vencimento");
	DATA = new JFormattedTextField();
	sair = new JButton("Sair");
	editar = new JButton("editar");
	estado = new JComboBox (estadoItems);
jcomp7 = new JLabel ("UF:");
jcomp9 = new JLabel ("Cidade:");
cidade = new JTextField (5);
	
	// inplementacao da data e do cpf/cnpj

	ftmData = new MaskFormatter("##/##/####");
	DATA = new JFormattedTextField(ftmData);
	ftmData.setValidCharacters("[telefone removido]");
	ftmcgc = new MaskFormatter("###########");
	CGC = new JFormattedTextField(ftmcgc);
	ftmcgc.setValidCharacters("[telefone removido]");

	R.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);
	R.setDocument(new MeuDocument());

	// adjust size and set layout
	setPreferredSize(new Dimension(624, 397));
	setLayout(null);

	// add components
	add(Incluir);
	add(jcomp2);
	add(SAC);
	add(jcomp4);
	add(jcomp5);
	add(jcomp6);
	add(CGC);
	add(jcomp8);
	add(BC);
	add(jcomp10);
	add(CH);
	add(jcomp12);
	add(R);
	add(jcomp14);
	add(DATA);
	add(sair);
	add(editar);
	add (estado);
add (jcomp7);
add (jcomp9);
add (cidade);
	
	// set component bounds (only needed by Absolute Positioning)
	Incluir.setBounds(250, 265, 100, 20);
	jcomp2.setBounds(25, 90, 50, 20);
	SAC.setBounds(75, 85, 360, 25);
	jcomp4.setBounds(25, 60, 100, 25);
	jcomp5.setBounds(105, 60, 45, 20);
	jcomp6.setBounds(160, 60, 65, 20);
	CGC.setBounds(220, 55, 155, 25);
	jcomp8.setBounds(390, 55, 45, 25);
	BC.setBounds(430, 55, 40, 25);
	jcomp10.setBounds(480, 55, 30, 20);
	CH.setBounds(510, 55, 65, 25);
	jcomp12.setBounds(445, 85, 35, 25);
	R.setBounds(480, 85, 100, 25);
	jcomp14.setBounds(25, 115, 75, 25);
	DATA.setBounds(95, 115, 100, 25);
	sair.setBounds(420, 265, 100, 20);
	editar.setBounds(25, 180, 140, 20);
	estado.setBounds (50, 145, 55, 20);
jcomp7.setBounds (25, 145, 20, 25);
jcomp9.setBounds (110, 145, 100, 25);
cidade.setBounds (160, 145, 100, 25);

	Incluir.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			String VSAC = SAC.getText();
			String VCGC = CGC.getText();
			String VBC = BC.getText();
			String VCH = CH.getText();
			String Vcidade = cidade.getText();
			String Vjcomp5 = jcomp5.getSelectedItem().toString();
			String VDATA = DATA.getText();
			String Vestado = estado.getSelectedItem().toString();
			

			try {
				File file = new File("arquivo.txt");//Cria uma instancia do arquivo "arquivo.txt" para o link file
				
				//Cria um BufferedWriter chamado out que se link ao arquivo "arquivo.txt"
				BufferedWriter out = new BufferedWriter(new FileWriter(
						file, true));  
				
				LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file));//Ler ar linhas do arquivo
				
				while(lineNumberReader.readLine() != null); // vai parar na ultima linha    
				lineNumberReader.close(); // Fechando  
				 
				System.out.println(lineNumberReader.getLineNumber()); // imprime o número de linhas que o arquivo possui.
				
				RandomAccessFile objeto = new RandomAccessFile(file , "rw"); 
				
				int ORI = lineNumberReader.getLineNumber();
				int ob = ORI--;
				String[] sai = new String[(int)lineNumberReader.getLineNumber()];
				 for (int i = 0; i < lineNumberReader.getLineNumber(); i++) {  
					                 sai[i]= objeto.readLine();
					                 System.out.println(sai[i]);
					                 //System.out.println(i);
					                 //System.out.println(objeto.length());
					                 //System.out.println(lineNumberReader.getLineNumber());
					                 
					                 File file2 = new File("arquivo2.txt");  
					                 BufferedWriter out2 = new BufferedWriter(new FileWriter(
												file2, true));
					                 int L = lineNumberReader.getLineNumber();
					                 int Ls = L--;
					                 //while(i != Ls){
					                 //for(int x = 0; x < lineNumberReader.getLineNumber(); x++) {
					                 if(i  < L){
					                 System.out.println("OIIIII");
					                 out2.write(sai[i] + System.getProperty("line.separator"));
					                 System.out.println("foi escrito");
					                 out2.close();
					                 
					                 File original = new File("arquivo.txt");
					                 File originalREM = new File("arquivo2.txt");
					                 original.delete();
					                 originalREM.renameTo(original);
					                 
					                 }else{
					                	 System.out.println("fim");
					                 }
				 }   
					                
				//Grava as informacoes no arquivo que foi aberto anteriormente
				out.write("1" + ";" + Vjcomp5 + ";" + VCGC + ";"
								+ VDATA + ";" + R.getText() + ";" + VCH
								+ ";" + VBC + ";" + VSAC + ";"
								+ Vcidade + ";" + Vestado + System.getProperty("line.separator") + "9;fim" + System.getProperty("line.separator"));
				
				out.close();//Fecha

				 
					
				
					 //Apaga os campos da GUI
				CGC.setText("");
				SAC.setText("");
				CH.setText("");
				R.setText("");
				DATA.setText("");
				BC.setText("");
				cidade.setText("");
			} catch (IOException e) {
			}

		}
	});

	editar.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			try {
				Runtime.getRuntime().exec(
						"D:\\WINDOWS\\system32\\notepad.exe arquivo.txt");
			} catch (IOException e) {

				e.printStackTrace();
			}

		}

	});

	sair.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			System.exit(0);

		}

	});

	jcomp5.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
				BC.setEditable(false);
				BC.setText("0");
			if (jcomp5.getSelectedItem() == "C"){ 
				BC.setText("");	 
				BC.setEditable(true);
					 
		}}

	});
	
}

public class MeuDocument extends PlainDocument {

	public void insertString(int offs, String str, AttributeSet a)
			throws BadLocationException {
		String texto = getText(0, getLength());
		if (texto.length() < 9) {
			remove(0, getLength());
			StringBuffer strBuf = new StringBuffer(texto
					.replaceAll(",", "")
					+ str);
			if (strBuf.length() < 3)
				strBuf.insert(0, ",");
			else
				strBuf.insert(strBuf.length() - 2, ",");
			super.insertString(0, strBuf.toString(), a);
		}
	}
}

public static void main(String[] args) throws ParseException {
	JFrame frame = new JFrame("painel");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.getContentPane().add(new painel());
	frame.pack();
	frame.setVisible(true);
}

}

Criado 25 de dezembro de 2007
Ultima resposta 26 de dez. de 2007
Respostas 9
Participantes 4