Problema com cópia de arquivos

Bom galera já vi muita gente perguntando isso mas ninguem exatamente com o mesmo problema que estou vamos lá:
o erro:

java.io.FileNotFoundException: c:\integrador\arquivos\leitura (Acesso negado)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at integrador.Integrador.LeArquivo(Integrador.java:58)
	at integrador.Integrador.main(Integrador.java:41)

Este erro para cada arquivo que ele tenta grava dentro do for

[code]
private static void LeArquivo() {

	Integrador.logger.info("Entrando no leitor de arquivos");
	File pastaLeitura = new File(config.get("pasta_de_leitura").toString());//o que o config.get recebe aqui é c:\integrador\arquivos\leitura
	File pastaEscrita = new File(config.get("pasta_de_escrita").toString());//o que o config.get recebe aqui é c:\integrador\arquivos\escrita
	//neste for consigo fazer loop para todos os arquivos que tenho na pasta.
	for (int i=0; i<pastaLeitura.list().length; i++){
		
		try {
                            //já sei a solução basica pro erro tenho que passar o nome do arquivo no FileInputStream e depois no FileOutpuStream tipo c:\integrador\arquivos\leitura\arquivo.txt
                           //porem tenho vários arquivos com nomes diferentes preciso que todo o arquivo eu leia e depois copie na nova pasta com o mesmo nome
			FileInputStream fis = new FileInputStream(pastaLeitura);
			FileOutputStream fos = new FileOutputStream(pastaEscrita);
			FileChannel inChannel = fis.getChannel();
			FileChannel outChannel = fos.getChannel();
			outChannel.transferFrom(inChannel, 0, inChannel.size());
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			Integrador.logger.error("erro arquivos não encontrado " + e.getMessage());
			
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			Integrador.logger.error("Erro ao salvar arquivos " + e.getMessage());
			e.printStackTrace();
			
		}
		
		
			
			
	}

		
			
}
		[/code]

O que não sei como fazer é pegar o nome do arquivo que estou lendo e passar para o arquivo de saída.

Valew pela ajuda…

Primeiro que o erro diz, claramente, “acesso negado”.
Segundo que o método list() retorna um array de String que contém os nomes dos arquivos existentes no diretório em questão.

Amigo então sobre o acesso negado coloquei os seguinte ifs para verificar se tenho permissão ou não

if (pastaLeitura.canRead() && pastaLeitura.canRead()){
			if(pastaEscrita.canRead() && pastaEscrita.canWrite()){
				Integrador.logger.debug("Permissão de leitura e escrita na pasta de leitura");
				Integrador.logger.debug("Permissão de leitura e escrita na pasta de escrita");
			}
		}

E pelo que estou entendendo dessa classe o que acontece deste erro é porque não estou retornando para ele o caminho completo com o nome dos arquivos ai tentei com a list() que retorna do File que tenho mas o que ele retorna são os nomes objetos na memória e não os nomes dos arquivos.
Como posso fazer para pegar o path e o nome dos arquivos para passar ? tipo c:\arquivo.txt ???

Leu o javadoc da classe java.io.File?
Se não, está em tempo.
Procure pela descrição detalhada do método listFiles

Então amigo meu problema é justo nessa classe quand eu utilizo o .listFiles() ou somente o list() eu consigo ver a quantidade de objetos na pasta, com o .length, porem quanto tento per o nome do arquivo algo como por exemplo System.out.println(path.listFiles()) a saide é está[Ljava.io.File;@1391f61c o que eu preciso descobrir é como passar o nome do arquivo para o file que vou pegar e o que vou criar para passar aqui nos input e no output ficaria algo assim

FileInputStream fis = new FileInputStream(pastaLeitura.getAbsoluteFile().listFiles().toString()); FileOutputStream fos = new FileOutputStream(pastaEscrita.getAbsoluteFile().listFiles().toString()); FileChannel inChannel = fis.getChannel(); FileChannel outChannel = fos.getChannel(); outChannel.transferFrom(inChannel, 0, inChannel.size());

Mas mesmo assim me da erro.


12 [main] INFO integrador.Integrador  - Lendo arquivo: c:\integrador\arquivos\leitura
13 [main] ERROR integrador.Integrador  - erro arquivo não encontrado [Ljava.io.File;@2f3cf887 (O sistema não pode encontrar o arquivo especificado)
java.io.FileNotFoundException: [Ljava.io.File;@2f3cf887 (O sistema não pode encontrar o arquivo especificado)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:97)
	at integrador.Integrador.LeArquivo(Integrador.java:67)
	at integrador.Integrador.main(Integrador.java:41)

Para cada arquivo que eu tento ler… mudando somente a referencia ao arquivo [Ljava.io.File;@2f3cf887

Aqui ocorreu tudo sem problemas, da para melhorar ainda mais o código…Copia os Arquivos de uma Pasta para Nova Pasta !!!

public class TesteCopia{

   List<Path> cArquivos = new ArrayList<>();

   public static void main(String[] args){
      TesteCopia teste = new TesteCopia();
      //Pasta onde Estão seus Arquivos
      teste.leituraArquivos("C:\\Users\\Voce\\Desktop\\Musicas");
      //Local onde nova pasta será criada e recebera as copias
      teste.copiandoArquivo("C:\\Users\\Voce\\Desktop\\NovaPastaMusica");
   }    

    private void leituraArquivos(String entradaCaminho){
        Path atual = Paths.get(entradaCaminho);        
        if(Files.isDirectory(atual)){
            try{
                DirectoryStream<Path> dir  = Files.newDirectoryStream(atual);
                for(Path pp : dir){                    
                    cArquivos.add(pp.toAbsolutePath());
                }                
            }
            catch(Exception ex){
            
            }            
        }else{
            JOptionPane.showMessageDialog(null, "Diretório Não Existe", "Verificando Diretorio", JOptionPane.INFORMATION_MESSAGE);
        }
    }


    private void copiandoArquivo(String saidaCaminho){
        Path novo = Paths.get(saidaCaminho);
        try{
            Files.createDirectories(novo);
            if(Files.isDirectory(novo)){
                for(Path cAbsoluto : cArquivos){
                    try{
                        Files.copy(cAbsoluto, Paths.get(novo + "\\" + cAbsoluto.getFileName()), StandardCopyOption.REPLACE_EXISTING);
                    }      
                    catch(Exception ex){
                        
                    }
                }
            }else{
                JOptionPane.showMessageDialog(null, "Diretório Não Criado", "Criação do Novo Diretório", JOptionPane.INFORMATION_MESSAGE);                
            }
        }  
        catch(Exception ex){
        
        }
    }
}