Mostrando postagens com marcador Copy. Mostrar todas as postagens
Mostrando postagens com marcador Copy. Mostrar todas as postagens

sexta-feira, 4 de dezembro de 2015

Resolvendo problema de path de arquivo errado

Resumo

Paths.get(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).toString();


Introdução

Tive um problema quando estava tentado acessar o local onde minha aplicação estava sendo executada (dentro da pasta bin do meu projeto), sempre que passava-se pelo trecho de código o path do arquivo parecia como errado, a solução para esse problema foi utilizar  a classe java.nio.file.Paths.

Exemplo de retorno com erro:

/C:/Users/Robson/dev/androis/Teste/bin/

Exemplo de retorno esperado:

C:\Users\Robson\dev\androis\Teste\bin


Abaixo é possível visualizar a resolução deste problema.

import java.net.URISyntaxException;
import java.nio.file.Paths;

public class TesteMain {

public static void main(String args[]) throws URISyntaxException {
TesteMain testeMain = new TesteMain();

System.out.println("Sem correção");
System.out.println(testeMain.getClass().getProtectionDomain().getCodeSource().getLocation());
System.out.println("Com correção");
System.out.println(Paths.get(testeMain.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()));

}

}


Após a execução do código acima o resultado expresso será:

Sem correção
file:/C:/Users/Ge3Software/dev/androis/Teste/bin/
Com correção

C:\Users\Ge3Software\dev\androis\Teste\bin

quarta-feira, 2 de dezembro de 2015

Copiando um arquivo com Java

Resumo


FileUtils.copyFile( arquivoOrigem,  arquivoDestino )


Introdução

O principal objetivo deste post é explicar uma maneira simples e rápido. Neste post utilizaremos a classe org.apache.commons.io.FileUtils.


Sintaxe:

      FileUtils.copyFile( arquivoOrigem,  arquivoDestino )

Onde:

  • arquivoOrigem - Arquivo original a ser copiado (tipo File).
  • arquivoDestino - Arquivo destino do arquivo a ser copiado (tipo File).

Exemplo:

...
try {

File arquivoOrigem=new File("/tmp/teste.txt");

FileUtils.copyFile(arquivoOrigem, new File("/tmp/teste2.txt"));

} catch (Exception ex) {
     System.out.println("ERRO! " + ex);
}
...

sexta-feira, 13 de julho de 2012

Copiar o conteúdo de uma lista para outra lista em java

Introdução



Hoje vou explicar de maneira simples e rápida como copiar todos itens de uma lista para uma outra lista (java.util.List), sendo possível modificar o conteúdo das listas sem interferir uma na outra, como ocorre normalmente quando é simplesmente copiada a referência da variável.


Copia com referência

Caso você deseja copiar um referência de uma lista para outra basta utilizar o sinal de igual (=) para atribuir o valor da lista a a lista b, porém sempre que for alterado o conteúdo de uma das listas o valor da outra também será modificado.


Sintaxe:

List  listaA = new ArrayList();
listaA.add(Item_T);
listaA.add(Item_T);

List  listaB = listaA;


Onde:

Tipo_T - Tipo de objecto que a lista guarda.
Item_T - Item adicionado a lista.



Abaixo é possível visualizar um exemplo de um programa  onde é copiado o conteúdo de uma lista para outra contendo referência na memória de seu conteúdo.


import java.util.ArrayList;
import java.util.List;

public class CopyList {

    public static void main(String args[]) {

        List listaOriginal  = new ArrayList();
        listaOriginal.add("A");
        listaOriginal.add("B");
        listaOriginal.add("C");
       
        System.out.println("Lista Original");
        exibirLista(listaOriginal);
       
        List listaCopia  = listaOriginal;
       
        System.out.println("Lista Cópia");
        exibirLista(listaCopia);
        listaCopia.clear();
       
        System.out.println("Lista Cópia");
        exibirLista(listaCopia);
       
        System.out.println("Lista Original");
        exibirLista(listaOriginal);
       
    }

    public static void exibirLista(List lista) {
        for (String i : lista) {
            System.out.print(i);
        }
        System.out.println();
    }
}



Abaixo é possível visualizar a execução do código acima.


 

 

Copia sem referência


Caso você deseja copiar uma lista para outra tornando possível a modificação do conteúdo de ambas sem que haja conflito no conteúdo uma da outra é necessário utilizar um processo bem simples (não que seja o único), basta colocar o lista a dentro do construtor da lista b.


Sintaxe:

List  listaA = new ArrayList();
listaA.add(Item_T);
listaA.add(Item_T);

List  listaB = new ArrayList(listaA);


Onde:

Tipo_T - Tipo de objecto que a lista guarda.
Item_T - Item adicionado a lista.

Abaixo é possível visualizar um exemplo de cópia sem referência:

import java.util.ArrayList;
import java.util.List;

public class CopyList {

    public static void main(String args[]) {

        List listaOriginal  = new ArrayList();
        listaOriginal.add("A");
        listaOriginal.add("B");
        listaOriginal.add("C");
       
        System.out.println("Lista Original");
        exibirLista(listaOriginal);
       
        List listaCopia  = new ArrayList(listaOriginal);
       
        System.out.println("Lista Cópia");
        exibirLista(listaCopia);
        listaCopia.clear();
       
        System.out.println("Lista Cópia");
        exibirLista(listaCopia);
       
        System.out.println("Lista Original");
        exibirLista(listaOriginal);
       
    }

    public static void exibirLista(List lista) {
        for (String i : lista) {
            System.out.print(i);
        }
        System.out.println();
    }
}



Abaixo é possível visualizar a execução do código acima.