Excluir metodos de usando java.io

28 respostas
R

Ola amigos, tenho uma pergunta meio idiota, porem naum achei resposta pra ela ainda. Será que é possível excluir palavras, trechos de codigo ou uma determinada parte de um arquivo usando java.io. Ou seja, não qro excluir o arquivo, mas sim o que tem dentro dele? se possivel fazer isto onde eu posso conseguir material ou um exemplo? :?:

28 Respostas

Marky.Vasconcelos

Se quiser excluir do .java é possivel… mas para os .class é bem mais complicado já que os .class é apenas o bytecode…

R

Amigo, é do .java que eu preciso excluir, o que eu preciso estudar para conseguir isso?

Marky.Vasconcelos

I/O
Writer e Readers
PrintWriter e Scanner

Voce só precisa ler o arquivo descobrir aonde esta o o método e escrever sem ele.

R

Então, eu fiz conforme o código abaixo, mas continua da mesma forma. Tentei apagar o arquivo, e escreve- lo novamente. O problema pra mim é que quando tenho que ‘recriar’ essa arquivo tenho que pegar os dados de uma lista. Naum sei por que ele esta pegando os dados que foram deletados e escrevendo novamente no ‘novo arquivo’.

// setando a localização do arquivo .xml
					File arquivo = new File("C:/FDDK/runtime-EclipseApplication/Extrator/src/"
							+ FreeDecisionWizardPage2.getCliente()     + "/"
							+ FreeDecisionWizardPage2.getFabricante()  + "/"
							+ FreeDecisionWizardPage2.getProduto()     + "/"
							+ FreeDecisionWizardPage2.getAreanegocio() + "/"
							+ FreeDecisionWizardPage2.Extrator() + ".xml"); 	

					//deletando o arquivo .xml quando não tiver nenhum item dentro da lista
					if (lista.getItemCount()  == 0){  
						arquivo.delete();	
					}
					//se a lista tiver mais de um elemento, gera um novo arquivo
					if (lista.getSelectionIndex()>=1){
						arquivo.delete();
						// 
						ModelLista novoTeste = new ModelLista(Banco , Driver , URL , Usuario , Senha , Schema , Cache , Read); 
						
						writer.write(" <Connection name=" + '"' 
						    		+ FreeDecisionWizardPage2.getCliente() + "."
							        + FreeDecisionWizardPage2.getFabricante() + "." 
								    + FreeDecisionWizardPage2.getProduto() + "."
							 	    + "shared.dbs." +  novoTeste.getBanco() + '"' 
								    + " jdbcDriver=" + '"' + novoTeste.getDriver() + '"' + " " );
						writer.write("jdbcUrl=" + '"' + novoTeste.getURL()
								+ '"' + " jdbcUser=" + '"'+ novoTeste.getUsuario() + '"' + " " );
						writer.write("jdbcPassword=" + '"' + novoTeste.getSenha() + '"' +
								" schemaName=" + '"' + " " + novoTeste.getSchema() + " " + '"' 
								+ " readOnly=" + '"' + novoTeste.getRead() + '"'
								+ " cacheSize=" + '"' + novoTeste.getCache() + '"'  + "/>"   + "\n");
						writer.close();
						
					}
	
					}
Marky.Vasconcelos

Se voce deletou o arquivo voce tem que cria-lo com file.newFile()

R

Agradeço pela resposta. no entanto, quando eu gero um novo arquivo, ele rescreve o arquivo com o item que foi apagado. Fiz assim:

if (lista.getItemCount() != 0){
						arquivo.delete();
						try {
//criando o arquivo
							arquivo.createNewFile();
//chamando o metodo que cria novamente o arquivo
							gerarArquivoXMLPage3();
						} catch (IOException e) {
							e.printStackTrace();
						}
						
						
					}
R

Colegas, continuo na luta para resolver meu problema. Ja fiz e refiz, mas não consigo fazer essa ‘joça’ funcionar… Segui a dica do colega Mark_Ameba, se eu apaguei tenho que criar novamente. Quanto a isso tudo bem, o problema que realmente persiste é que, o arquivo esta sendo recriado com os itens que foram apagados. É isso mesmo, eu deleto um item da lista e o java vai la e cria ele novamente, na verdade era pra ser o contrario, era pra cria os elementos que ficaram dentro da lista. Minha ultima tentativa que tambem foi fracasssada foi essa: :shock:
Espero que alguem possa me ajudar!!!

if (lista.getSelectionIndex()!=0){
							try {
								// incializando as variaveis e pegando o que tem na lista
								Banco = null;
								Banco = novoTeste.getBanco();
								Driver =null;
								Driver = novoTeste.getDriver();
								URL = null;
								URL = novoTeste.getURL();
								Usuario = null;
								Usuario = novoTeste.getUsuario();
								Senha = null;
								Senha = novoTeste.getSenha();
								Schema = null;
								Schema = novoTeste.getSchema();
								Read = null;
								Read = novoTeste.getRead();
								Cache = null;
								Cache = novoTeste.getCache();
								// criando o arquivo novamente
								File arqu = new File(
										"C:/FDDK/runtime-EclipseApplication/Extrator/src/"
										+ FreeDecisionWizardPage2.getCliente()     + "/"
										+ FreeDecisionWizardPage2.getFabricante()  + "/"
										+ FreeDecisionWizardPage2.getProduto()     + "/"
										+ FreeDecisionWizardPage2.getAreanegocio() + "/"
										+ FreeDecisionWizardPage2.Extrator() + ".xml");		
								if (!arqu.exists()){
									arqu.createNewFile();
									// escrevendo o arquivo novamente
									writer = new PrintWriter(new FileWriter(arqu));
									writer.write(" <Connection name=" + '"' + FreeDecisionWizardPage2.getCliente() + "."
											+ FreeDecisionWizardPage2.getFabricante() + "." + FreeDecisionWizardPage2.getProduto() + "."
											+ "shared.dbs." + Banco + '"' 
											+ " jdbcDriver=" + '"' + Driver + '"' + " " );
									writer.write("jdbcUrl=" + '"' + URL + '"' + " jdbcUser=" + '"'
											+ Usuario + '"' + " " );
									writer.write("jdbcPassword=" + '"' + Senha  + '"' + " schemaName=" + '"' + " "
											+ Schema + " " + '"' + " readOnly=" + '"' + Read + '"'
											+ " cacheSize=" + '"' + Cache + '"'  + "/>"   + "\n");
									writer.close();
Marky.Vasconcelos

Cade a parte que voce removeu a linha?

R

Eu removi a classe inteira… e to tentando criar ela novamente sem o item removido

if (lista.getItemCount()  == 0){  
						arquivo.delete();	
					}
					//deletando o arquivo
						if (lista.getItemCount()>=1){
							arquivo.delete();
						}
mduques

Tem certeza que o arquivo não existe?

File arqu = new File(  
                                         "C:/FDDK/runtime-EclipseApplication/Extrator/src/"  
                                         + FreeDecisionWizardPage2.getCliente()     + "/"  
                                         + FreeDecisionWizardPage2.getFabricante()  + "/"  
                                         + FreeDecisionWizardPage2.getProduto()     + "/"  
                                         + FreeDecisionWizardPage2.getAreanegocio() + "/"  
                                         + FreeDecisionWizardPage2.Extrator() + ".xml");

se existir nunca vai entrar no seu if ai

if (!arqu.exists()){  
                                     arqu.createNewFile();
R

O arquivo é excluido no if acima qdo eu seleciono um item na lista. Entaum , naum era pra existir. E agora o que eu faço? :oops:
Só uma obs: as garotas da foto são bein gatas!!!

mduques

uheuheuhe

rpz vc tá debugando? tem certeza que ta entrando no if?

if (!arqu.exists())

verifica se tá criando um novo arquivo assim:

coloca esse if ai tbem na criação

if (arqu.createNewFile()){
System.out.println("criou");
} else {
System.out.println("Não criou");
}
R

Vc tinha razão, não criou… i agora alguma sugestão? :?:
Obs: Bonitas as garotas!!!

mduques

é pq ele existe…
veja novamente a exclusão…
e tente usar o mesmo File (a mesma instancia) se possível

gatas ne… foi um dia de sorte hueuheh

Marky.Vasconcelos

Nesse if

Retire a condição de que apenas se não existir ele continuara, apenas passe no if e se não existir crie um novo.

R

OK!!! vou refazer essa parte novamente, dar mais uma estudada neste metodo de exclusão, e chegando ou não a uma solução eu postarei aqui novamente!!!

R

Entaum, se eu fizer assim :
Naum cria o arquivo, pq parece naum estar entrando no if

if (!arquivo.exists()){
arquivo.createNewFile();

e si fizer assim:
Quando eu for remover um item da lista, apaga o arquivo inteiro

if (arquivo.exists()){
arquivo.createNewFile();

Isso tah virado numa bola de neve!!!hehehehe

mduques

vc so pode criar um novo se nao existir,…

if (arquivo.exists()){ arquivo.delete(); arquivo.createNewFile(); }

Marky.Vasconcelos

A idéia que tive era isso

if (!arquivo.exists()){     
   arquivo.createNewFile();     
}else{
   arquivo.delete();   
   arquivo.createNewFile();     
}
//Continua o resto para escrever no arquivo.
R

Pessoal, to quase desistindo, pq o resultado é sempre o mesmo. Ele tah escrevendo no arquivo os itens deletados. Acho que vou precisar mudar meus metodos, ou sei la achar uma outra forma de isso funcionar, sei la, se vcs tiverem uma outra solução eu agradeço.Vou apanhar mais um pouco em cima disso e se naum funcionar vou pesquisar outra forma.

R

Eu estava procurando aqui no forum e achei algo que parece ser interessante: java.io.RandomAccessFile. Não sei se isso pode me ajudar, o q vcs axam? Estou perguntando isso, pq sou um programador novo e essa parte de diretórios é algo realmente novo pra mim.

R

Entaum, pelo menos agora consegui apagar e gerar um arquivo em branco, só que naum da pra escrever dentro, naum consigo pegar o que resta na lista para poder escrever.

if (arquivo.exists()){    
arquivo.delete();  
							
} else{
arquivo.createNewFile(); 
}
Marky.Vasconcelos

A bit of code…

File f = new File("C://arq.java");
if(f.exists()){
f.delete();
f.createNewFile();
}else{
f.createNewFile();
}
PrintWriter writer = new PrintWriter(new FileOutputStream(f));
writer.write("Arquivo novo");
writer.flush();
writer.close();
R

Quase la, pelo menos agora tah entrando dentro do if, excluindo e criando um arquivo novo em branco. Então agora tenho outros problema, no entanto não tem nada a ver com o topico que eu postei. Vlw pela ajuda e agora neste momento, ficou desta forma:

try{
						File arquivo = new File("C:/FDDK/runtime-EclipseApplication/Extrator/src/"
								+ FreeDecisionWizardPage2.getCliente()     + "/"
								+ FreeDecisionWizardPage2.getFabricante()  + "/"
								+ FreeDecisionWizardPage2.getProduto()     + "/"
								+ FreeDecisionWizardPage2.getAreanegocio() + "/"
								+ FreeDecisionWizardPage2.Extrator() + ".xml"); 

						if (arquivo.exists()){    
							arquivo.delete();  
							
						} else{
							arquivo.createNewFile();
                                                   // aqui escreve os dados da classe
						}
if (arquivo.createNewFile()){  
								System.out.println("criou");  
							} else {  
								System.out.println("Não criou");  
							}
Marky.Vasconcelos

Não entendi

if (arquivo.exists()){//Se arquivo existir
                            arquivo.delete();     //apaga ele
                               
                        } else{   //Se não
                            arquivo.createNewFile();   //cria um novo
                                                   // aqui escreve os dados da classe   
                        }   
if (arquivo.createNewFile()){     //Cria um novo ??
                                System.out.println("criou");     
                            } else {     
                                System.out.println("Não criou");     
                            }

Sua inteção não era fazer assim?

File arquivo = new File("C:/FDDK/runtime-EclipseApplication/Extrator/src/"   
                                + FreeDecisionWizardPage2.getCliente()     + "/"   
                                + FreeDecisionWizardPage2.getFabricante()  + "/"   
                                + FreeDecisionWizardPage2.getProduto()     + "/"   
                                + FreeDecisionWizardPage2.getAreanegocio() + "/"   
                                + FreeDecisionWizardPage2.Extrator() + ".xml");   
  
                        if (arquivo.exists()){//Se ele existir apaga
                            arquivo.delete();     
                         }
                            arquivo.createNewFile();//Aqui cria um novo, caso entrasse no if anterior o arquivo foi deletado e se não entrou o arquivo não existe.. então esse método criara sempre um novo arquivo (Não contendo com problemas de I/O)   
                                                   // aqui escreve os dados da classe
R

Então colega, desta forma ta errado? pois ele entra no if e apaga o arquivo, em seguida cria um novo arquivo em branco. Vou fazer desta forma que me propôs! l

R

Ola… fiz desta forma. Pra falar bem da verdade não sei por que isso acontece, ele não cria novamente o arquivo e ainda por cima apaga o ‘cara’ errado.

Ex: digito no meu CampoTXT - ‘Fórum’ e pressiono ‘salvar’ - o nome 'Forum’é adicionado a lista que esta na tela e um arquivo é criado e dentro deste arquivo aparece o nome ‘Forum’.

  • Digamos que repita esse processo adiciono ‘Forum.Guj’ a lista e ao arquivo. Desta forma ja tenho 2 nomes na lista e no arquivo.

  • Então vou remover o ‘Forum’. Assim sendo, pressiono ‘Remover’, então o ‘Forum’ é removido da lista, o arquivo é apagado e criado outro novo em branco. (fazendo da minha forma) e depois não consigo escrever dentro do arquivo, pois, não consigo pegar os itens que não estão selecionados na lista para poder escrever o arquivo.

  • se eu faço conforme o citado anteriormente pelo mark_ameba, o arquivo que é criado com o nome ‘Fórum’ o mesmo que foi apagado, ou seja, esta errado, pq deveria criar o arquivo contendo ‘Forum.Guj’.


Acho que esta um pouco confuso.

R

Colegas… depois de brigar por alguns dias com o java, resolvemos fazer as pazes…rsrsrsrs, Entao resolvi postar a solução, quem sabe naum pode ajudar alguem!!! Ficou assim!!!

// buscando a localização do arquivo para pode ser excluido
					try{
						File arquivo = new File("C:/FDDK/runtime-EclipseApplication/Extrator/src/"
								+ FreeDecisionWizardPage2.getCliente()     + "/"
								+ FreeDecisionWizardPage2.getFabricante()  + "/"
								+ FreeDecisionWizardPage2.getProduto()     + "/"
								+ FreeDecisionWizardPage2.getAreanegocio() + "/"
								+ FreeDecisionWizardPage2.Extrator() + ".xml"); 
						// se o arquivo existe, apaga o arquivo
						if (arquivo.exists()){    
							arquivo.delete();  
							
						} 
						// Criando novamente o arquivo
							arquivo.createNewFile(); 
							
							// percorrer a lista. Buscando os itens da lista que não foram excluidos.
							// passando a posicao[i] + o nome da variavel que contem o conteudo do arquivo.xml.
								for(int i = 0; i< lista.getItemCount();i++){
									// escrevendo o arquivo
									writer = new PrintWriter(new FileWriter(arquivo));
										writer.write(" <Connection name=" + '"' + FreeDecisionWizardPage2.getCliente() + "."
												+ FreeDecisionWizardPage2.getFabricante() + "." + FreeDecisionWizardPage2.getProduto() + "."
												+ "shared.dbs." + array.get(i).getBanco() + '"' 
												+ " jdbcDriver=" + '"' + array.get(i).getDriver() + '"' + " " );
										writer.write("jdbcUrl=" + '"' + array.get(i).getURL() + '"' + " jdbcUser=" + '"'
												+ array.get(i).getUsuario() + '"' + " " );
										writer.write("jdbcPassword=" + '"' + array.get(i).getSenha()  + '"' + " schemaName=" + '"' + " "
												+ array.get(i).getSchema() + " " + '"' + " readOnly=" + '"' + array.get(i).getRead() + '"'
												+ " cacheSize=" + '"' + array.get(i).getCache() + '"'  + "/>"   + "\n");
										writer.close();
								}
								
					}catch (Exception e) {

					}
				}
Criado 4 de dezembro de 2008
Ultima resposta 10 de dez. de 2008
Respostas 28
Participantes 3