Reescrevendo em arquivo

3 respostas
V

Pessoal,

Tenho uma método que envia dados para serem escritos em um arquivo e outro método que pega esses dados e escreve.

Estou encontrando problema quando tento reescrever.

Método que envia os dados:

private void envia(java.awt.event.ActionEvent evt) {                                         
        for( int linha=0; linha<this.jTable1.getRowCount(); linha++){
            String name = (String)this.jTable1.getModel().getValueAt(linha,0);
            presentationRecorder = new PresentationRecorder();
            presentationRecorder.createIndexSMILCode(name, linha);
        }
}

Método que escreve:

public void createIndexSMILCode(String textFile, int linha) {
        
        try {
            
            FileReader reader = new FileReader("C:\Documents and Settings\vlima\Desktop\Teste do Gravador\t6\index.smil");
            BufferedReader leitor = new BufferedReader(reader);           
            PrintStream out = new PrintStream("C:\Documents and Settings\vlima\Desktop\Teste do Gravador\t6\index1.smil"); 
            
                String s = null;
                do {
                    s = leitor.readLine();

                    if(s != null) {
                        if(s.trim().toLowerCase().startsWith("<!-- begin" + linha + " -->")) {                        
                                out.println("<href=\"" + textFile + ".smil\">");                            
                            continue;
                        } else if(s.trim().toLowerCase().startsWith("<!-- end" + linha + " -->")) {
                            continue;
                        }                    
                        out.println(s);
                    }
                } while(s != null);
            
            leitor.close();
            reader.close();
            out.close();
            
        } catch(Exception e) {
            Log.warning("Exception when trying to create SMIL code for presentation", e);
        }
        
    }//createIndexSMILCode

Do jeito que está, o método grava em outro arquivo e apenas o último dado enviado.

Como faço para manter no mesmo arquivo que abro e escrever todos os dados enviados?

Vinicius.

3 Respostas

T

das duas uma: ou vc mantem o BufferedWriter (a instancia) e continua escrevendo ou manda abrir em modo append (que vai dar mais dor de cabeca pois mesmo se reiniciar a aplicacao, vai continuar dando append no fim do arquivo)

peczenyj
public void createIndexSMILCode(String textFile, int linha) {
        
        try {
            
        	String a = "C:\Documents and Settings\vlima\Desktop\Teste do Gravador\t6\index.smil";
        	String b = "C:\Documents and Settings\vlima\Desktop\Teste do Gravador\t6\index1.smil";        	
        	
        	FileReader reader = new FileReader(a);
            BufferedReader leitor = new BufferedReader(reader);           
            PrintStream out = new PrintStream(b); 
            
                String s = null;
                while((s = leitor.readLine())!= null){
                		
                        if(s.trim().toLowerCase().startsWith("<!-- begin" + linha + " -->")) {                        
                            out.println("<href=\"" + textFile + ".smil\">");                            
                            continue;
                        } else if(s.trim().toLowerCase().startsWith("<!-- end" + linha + " -->")) {
                            continue; // não deveria ser um 'break' ?
                        }            
                        out.println(s);
                } 
            
            leitor.close();
            reader.close();
            out.close();
            
        } catch(Exception e) {
            Log.warning("Exception when trying to create SMIL code for presentation", e);
        }
        
    }//createIndexSMILCode

Aqui pra mim funciona 'como vc quer' ;-)

V

Fiz o teste,

Como eu disse, eu precisava ler e escrever no mesmo arquivo (este que vc passou, como no meu, eles são diferentes), resolvendo esse problema, há um outro.

<text
region=“region_content2”

src="1.txt"/>
    <text 
          region="region_content3"

<href=“oiuoiu.smil”>
src=“2.txt”/>

Como mostrado acima, ele está gravando no arquivo apenas o último dado que chega, queria q gravasse todos.

<text
region=“region_content2”
<href=“oihgfhgfhgfhuoiu.smil”>
src=“1.txt”/>
<text
region=“region_content3”
<href=“oiuoiu.smil”>
src=“2.txt”/>

Criado 21 de agosto de 2006
Ultima resposta 21 de ago. de 2006
Respostas 3
Participantes 3