Enviar arquivos a diretórios e removê-los

Boa tarde!
Queria saber como fazer o seguinte:

PARTE 1
Tenho arquivos de extensão .txt .ico .exe como fazer para que eles façam parte do programa, ou seja, que eles fiquem dentro do .jar para distribuição;

PARTE 2
Supondo que eu consegui fazer um executavel em java “Aplicativo.jar” dentro desse .jar eu tenho os três tipos de arquivo que eu mencionei;
Eu queria jogar esses arquivo que estão dentro do jar em pasta de sistema ex: C:\Arquivos de programa\Meu aplicativo;

PARTE 3
Ainda no mesmo programa digamos que eu tenha um gerenciador que tira os arquivos de dentro daquele diretório e os coloca de volta através de dois botões desinstalar e instalar respectivamente sempre quando necessário;
Só que para desinstalar ele deve ter um log dos arquivos que ele jogou naquele diretório (não sei se realmente necessário) para que eles sejam removidos completamente sem deixar vestígios assim arquivos diferentes podem ser instalados no mesmo lugar sem gerar conflitos nos novos arquivos.

PARTE 4
Agora ficando um pouco mais complicado ex:
C:\Arquivos de programa\Meu Aplicativo\Modo 1;
C:\Arquivos de programa\Meu Aplicativo\Modo 2;
No exemplo eu mostrei um diretório com duas pastas eu quero retirar somente a pasta “Modo 2” remoção de diretório

Essa minha pergunta não seria trabalho de faculdade mas sim porque estou fazendo um programa simples para gerenciar modos para melhorar o entendimento do estudo e nessa parte do programa eu tenho dificuldade por enquanto não vou usar Swing.
Desde já agradeço.

Isto está me parecendo um instalador…

Parte 1: Basta você criar uma pasta no seu projeto, e colocar os arquivos que deseja, o jar gerado vai contê-lo. Gere o jar com o Fat Jar

Parte 2: Axo melhor não mover os arquivos, e sim copiá-los… Fiz uma classe exemplo:

[code]public class Onimatsu{

public static void main(String[] args) {
	/** 
	 * Explicação:
	 * TUDO é uma pasta que está dentro da pasta src (que vai estar no jar também), e dentro dela tem todos os arquivos...
	 * Depois implemente para que ele pegue todos os arquivos da pasta TUDO, e copie para o C:/coisas.
	 */
	new Onimatsu().copiar("/TUDO/teste.xls","C:/coisas/teste.xls"); 
}

private void copiar(String origem, String destino) {
	try {
		File srcFile = new File(this.getClass().getResource(origem).toURI());
		File tgtFile = new File(destino);

		String endereco = destino.substring(0, destino.lastIndexOf("/"));
		File _pastaDeletar = new File(endereco);
		if (!_pastaDeletar.exists()) {
			_pastaDeletar.mkdir();
		}

		FileChannel sourceChannel = new FileInputStream(srcFile).getChannel();
		FileChannel targetChannel = new FileOutputStream(tgtFile).getChannel();
		sourceChannel.transferTo(0, sourceChannel.size(), targetChannel);
		sourceChannel.close();
		targetChannel.close();

	} catch (Exception e) {
		e.printStackTrace();
	}
}

}[/code]

Parte 3: Não, não precisa de um log… Se fosse um processo de instalação sofisticado, teria registro e tal… O que você faz ao desinstalar pode ser simplesmente deletar a pasta:

[code] //No caso acima, você pode chamá-lo assim: deleteDir(new File(“C:/coisas/”));
public boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list(); //não se pode deletar um diretório se tiver algo dentro…
for (int i=0; i<children.length; i++) { //por isso tem que deletar tudo de dentro dele.
boolean success = deleteDir(new File(dir, children[i] ));
if (!success) {
return false;
}
}
}

	         // O diretório está vazio, agora pode-se deletar 
	         return dir.delete();  
	     } [/code]

Mas se você ensistir, pode criar um arquivo txt, gravá-lo em algum lugar, com todos os arquivos que foram jogados na pasta, e depois deletá-los.

Parte 4: Você usaria o método acima, assim:

deleteDir(new File("C:\Arquivos de programa\Meu Aplicativo\Modo 2"));

Obrigado pela resposta sua explicação foi boa mas ainda não sei o que aconteceu de errado os arquivos não foram copiados. Eu fiz o seguinte:

1 - Eu fiz as classes Instalar e Desinstalar ambas com o main (já que o meu programa ainda não têm Swing, ou seja, sem botões eu executo as classes separadas no botão play do netBeans) sem modificar muito seu exemplo até porque eu quero intender primeiro o seu código é avançado.
2 - Fiz os imports que achei mais necessário (não sei se estão todos certos)
3 - Criei a planilha xls com o mesmo nome e coloquei ela manualmente dentro da pasta src, no netBeans a pasta “TUDO” apareceu na guia de projetos e também dentro do jar quando compilei.

Então o programa que inicialmente tem apenas duas classes ficou assim:

Instalar:

[code]
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;

public class Instalar {

public static void main(String[] args) { 
    new Instalar().copiar("/TUDO/teste.xls", "C:/coisas/teste.xls");
}

private void copiar(String origem, String destino) {
    try {
        File srcFile = new File(this.getClass().getResource(origem).toURI());
        File tgtFile = new File(destino);

        String endereco = destino.substring(0, destino.lastIndexOf("/"));
        File _pastaDeletar = new File(endereco);
        if (!_pastaDeletar.exists()) {
            _pastaDeletar.mkdir();
        }

        FileChannel sourceChannel = new FileInputStream(srcFile).getChannel();
        FileChannel targetChannel = new FileOutputStream(tgtFile).getChannel();
        sourceChannel.transferTo(0, sourceChannel.size(), targetChannel);
        sourceChannel.close();
        targetChannel.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}[/code]Desinstalar:

[code]
import java.io.File;

public class Desinstalar {

public static void main(String[] args) {
    new Desinstalar().deleteDir(new File("C:/coisas/"));
}

public boolean deleteDir(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();   
        for (int i = 0; i < children.length; i++) {  
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    return dir.delete();
}

}[/code]Todos os meus testes não tiveram resultados qual foi o erro do código? Eu preciso ter o “básico” a noção para aumentar o código posteriormente com as pastas e arquivos que eu quero.
OBS: O programa tem dois pacotes o primeiro e o “<pacote padrão>” que guarda as duas classes e o “TUDO” com a planilha.

TUDO é o nome da pasta…

Pode ter causado confusão.
Vá dentro da pasta src do seu projeto, e crie uma pasta chamada “pastadecoisas”…

No main você muda para:

 new Instalar().copiar("/pastadecoisas/teste.xls", "C:/coisas/teste.xls");  

Manda executar primeiro sem gerar o jar, e veja se dá certo…

Eu mudei o nome para pastadecoisas mas mesmo assim não acontece nada. Não gerei o jar dessa vez, porém já estava executando no botão de play do netBeans desde o início cada classe separadamente.
Eu fiz o teste com o desinstalar e também não está funcionando. Será que foi import errado?