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? :?:
Excluir metodos de usando java.io
28 Respostas
Se quiser excluir do .java é possivel… mas para os .class é bem mais complicado já que os .class é apenas o bytecode…
Amigo, é do .java que eu preciso excluir, o que eu preciso estudar para conseguir isso?
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.
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();
}
}
Se voce deletou o arquivo voce tem que cria-lo com file.newFile()
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();
}
}
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();
Cade a parte que voce removeu a linha?
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();
}
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();
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!!!
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");
}
Vc tinha razão, não criou… i agora alguma sugestão? :?:
Obs: Bonitas as garotas!!!
é 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
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.
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!!!
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
vc so pode criar um novo se nao existir,…
if (arquivo.exists()){
arquivo.delete();
arquivo.createNewFile();
}
A idéia que tive era isso
if (!arquivo.exists()){
arquivo.createNewFile();
}else{
arquivo.delete();
arquivo.createNewFile();
}
//Continua o resto para escrever no arquivo.
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.
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.
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();
}
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();
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");
}
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
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
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.
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) {
}
}