Loading ...
Sorry, an error occurred while loading the content.

Re: [riojug] Metodo renameTo() de java.io.File "falhando".

Expand Messages
  • Andre Fonseca
    Uma solução um tanto tosca seria fazer como antigamente : 1. Pegar o seu file que deseja mover 2. Criar um arquivo para onde deseja escrever 3. Ler todo o
    Message 1 of 14 , Nov 11, 2009
    • 0 Attachment
      Uma solução um tanto tosca seria fazer como "antigamente": 

      1. Pegar o seu file que deseja mover
      2. Criar um arquivo para onde deseja escrever
      3. Ler todo o conteúdo do primeiro arquivo e escrevê-lo no segundo
      4. Fechar os dois stream.
      Sei também que dentro da nova api de io, dentro de Channels (não tenho certeza) você consegue fazer cópias de arquivo e mover. Dá uma olhada no javadoc. 


      Espero, sinceramente, ter ajudado

      Atenciosamente
      Andre Fonseca


      2009/11/11 Alex Rios <alex.rios1337@...>
       

      Achei uma solução para o problema:

      Se tiver algo bloqueando ele, recolha o lixo com System.gc();

      Em todo caso, pedidos ao sistema operacional são somente pedidos, não quer dizer que ele os cumpra imediatamente.


      Alguem vê alguma solução melhor?


      2009/11/11 Alex Rios <alex.rios1337@...>
      Testado.

      Não lança nenhuma RuntimeException e debugando o código simplesmente passa devolvendo false.


      2009/11/11 Alex Rios <alex.rios1337@...>

      Vou tentar fazer isso, mas já adiantando ambos os códigos que eu fiz estou rodando direto do eclipse, a permissão para acesso ao diretório provavelmente não iria variar.

      De qualquer forma tentarei a dica.

      2009/11/11 Andre Fonseca <aoqfonseca@...>

       

      Alex,

      Por acaso o seu sistema não lança alguma exceção ?

      Tenta colocar o seu trecho de código dentro de um try catch pegando por RuntimeException.

      Como já sugeriram  pode ser algo relacionado a permissão.

      Faz um debug para ver oque pode estar dando errado !

      Abraços
      Andre Fonseca

      On Wed, Nov 11, 2009 at 5:23 PM, Alex Rios <alex.rios1337@...> wrote:
       

      Criei um metodo main e refiz as operações do meu método e roda numa boa.
      Porém dentra da minha aplicação ele simplesmente não move.

      O que eu queria saber é, por quais motivos essa operação falha?

      2009/11/11 Andrei Vajgel <vajgel@...>

       

      Tirado do Javadoc do método renameTo(File dest):


      Whether or not this method can move a file from one filesystem to another is platform-dependent. The return value should always be checked to make sure that the rename operation was successful.

      Andrei

      On Wed, Nov 11, 2009 at 5:08 PM, Alex Rios <alex.rios1337@...> wrote:
       

      Ola Pessoal,

      Queria saber se alguem já passou por isso.

      Criei um metodo para mover meu arquivos para um diretorio especifico, porém está retornando false, em todas as minhas tentativas.

      public void moveFile(File file) {
              File destination = new File("C:/opt/testepc/proc/" + file.getName());
              log.info("moving file" + file.getName() + "...");
              if(file.renameTo(destination)){
                  log.info(file.getName() + " moved successfully.");           
              }else{
                  log.info(file.getName() + " cannot be moved.");
              }
          }


      Algum palpite?
      --
      Atenciosamente,
      Alex Rios





      --
      Atenciosamente,
      Alex Rios



      --
      Abraços Sinceros e Agradecidos
      Andre Fonseca
      http://www.andrefonseca.net



      --
      Atenciosamente,
      Alex Rios



      --
      Atenciosamente,
      Alex Rios



      --
      Atenciosamente,
      Alex Rios




      --
      Abraços Sinceros e Agradecidos
      Andre Fonseca
      http://www.andrefonseca.net
    • Alex Rios
      Mas para ter o mesmo efeito eu ainda teria que fazer file.delete(); 2009/11/11 Andre Fonseca ... -- Atenciosamente, Alex Rios Mas para
      Message 2 of 14 , Nov 11, 2009
      • 0 Attachment

        Mas para ter o mesmo efeito eu ainda teria que fazer file.delete();

         
        2009/11/11 Andre Fonseca <aoqfonseca@...>
         

        Uma solução um tanto tosca seria fazer como "antigamente": 


        1. Pegar o seu file que deseja mover
        2. Criar um arquivo para onde deseja escrever
        3. Ler todo o conteúdo do primeiro arquivo e escrevê-lo no segundo
        4. Fechar os dois stream.
        Sei também que dentro da nova api de io, dentro de Channels (não tenho certeza) você consegue fazer cópias de arquivo e mover. Dá uma olhada no javadoc. 


        Espero, sinceramente, ter ajudado

        Atenciosamente
        Andre Fonseca


        2009/11/11 Alex Rios <alex.rios1337@...>
         

        Achei uma solução para o problema:

        Se tiver algo bloqueando ele, recolha o lixo com System.gc();

        Em todo caso, pedidos ao sistema operacional são somente pedidos, não quer dizer que ele os cumpra imediatamente.


        Alguem vê alguma solução melhor?


        2009/11/11 Alex Rios <alex.rios1337@...>
        Testado.

        Não lança nenhuma RuntimeException e debugando o código simplesmente passa devolvendo false.


        2009/11/11 Alex Rios <alex.rios1337@...>

        Vou tentar fazer isso, mas já adiantando ambos os códigos que eu fiz estou rodando direto do eclipse, a permissão para acesso ao diretório provavelmente não iria variar.

        De qualquer forma tentarei a dica.

        2009/11/11 Andre Fonseca <aoqfonseca@...>

         

        Alex,

        Por acaso o seu sistema não lança alguma exceção ?

        Tenta colocar o seu trecho de código dentro de um try catch pegando por RuntimeException.

        Como já sugeriram  pode ser algo relacionado a permissão.

        Faz um debug para ver oque pode estar dando errado !

        Abraços
        Andre Fonseca

        On Wed, Nov 11, 2009 at 5:23 PM, Alex Rios <alex.rios1337@...> wrote:
         

        Criei um metodo main e refiz as operações do meu método e roda numa boa.
        Porém dentra da minha aplicação ele simplesmente não move.

        O que eu queria saber é, por quais motivos essa operação falha?

        2009/11/11 Andrei Vajgel <vajgel@...>

         

        Tirado do Javadoc do método renameTo(File dest):


        Whether or not this method can move a file from one filesystem to another is platform-dependent. The return value should always be checked to make sure that the rename operation was successful.

        Andrei

        On Wed, Nov 11, 2009 at 5:08 PM, Alex Rios <alex.rios1337@...> wrote:
         

        Ola Pessoal,

        Queria saber se alguem já passou por isso.

        Criei um metodo para mover meu arquivos para um diretorio especifico, porém está retornando false, em todas as minhas tentativas.

        public void moveFile(File file) {
                File destination = new File("C:/opt/testepc/proc/" + file.getName());
                log.info("moving file" + file.getName() + "...");
                if(file.renameTo(destination)){
                    log.info(file.getName() + " moved successfully.");           
                }else{
                    log.info(file.getName() + " cannot be moved.");
                }
            }


        Algum palpite?
        --
        Atenciosamente,
        Alex Rios





        --
        Atenciosamente,
        Alex Rios



        --
        Abraços Sinceros e Agradecidos
        Andre Fonseca
        http://www.andrefonseca.net



        --
        Atenciosamente,
        Alex Rios



        --
        Atenciosamente,
        Alex Rios



        --
        Atenciosamente,
        Alex Rios




        --
        Abraços Sinceros e Agradecidos
        Andre Fonseca
        http://www.andrefonseca.net




        --
        Atenciosamente,
        Alex Rios
      • Andre Fonseca
        Alex, Dando vi que dentro da api commons do pessoal da Apache, na parte de IO, existe uma classe FileUtils que tem todos métodos de manipulação de arquivos,
        Message 3 of 14 , Nov 11, 2009
        • 0 Attachment
          Alex,

          Dando vi que dentro da api commons do pessoal da Apache, na parte de IO, existe uma classe FileUtils que tem todos métodos de manipulação de arquivos, inclusive, a sua desejada move.

          Te sugiro duas coisas : primeiro pega o jar e veja se ele funciona dentro do seu projeto. Como é uma api amplamente testada e usada, possivelmente, caso ela não funcione, evidenciara que existe algo com sua aplicação ou contexto (diretorio, so, etc.... ) 

          Caso funcione, você pode usá-lo ou tentar abrir seu código (baixar o fonte e olhar) para ver como foi implementado e fazer igual com suas simplificações e customizações. 


          Espero que tenha te ajudado. Sei como isso dá dor de cabeça. 

          Abraços
          Andre Fonseca

          2009/11/11 Alex Rios <alex.rios1337@...>
           


          Mas para ter o mesmo efeito eu ainda teria que fazer file.delete();

           
          2009/11/11 Andre Fonseca <aoqfonseca@...>
           

          Uma solução um tanto tosca seria fazer como "antigamente": 


          1. Pegar o seu file que deseja mover
          2. Criar um arquivo para onde deseja escrever
          3. Ler todo o conteúdo do primeiro arquivo e escrevê-lo no segundo
          4. Fechar os dois stream.
          Sei também que dentro da nova api de io, dentro de Channels (não tenho certeza) você consegue fazer cópias de arquivo e mover. Dá uma olhada no javadoc. 


          Espero, sinceramente, ter ajudado

          Atenciosamente
          Andre Fonseca


          2009/11/11 Alex Rios <alex.rios1337@...>
           

          Achei uma solução para o problema:

          Se tiver algo bloqueando ele, recolha o lixo com System.gc();

          Em todo caso, pedidos ao sistema operacional são somente pedidos, não quer dizer que ele os cumpra imediatamente.


          Alguem vê alguma solução melhor?


          2009/11/11 Alex Rios <alex.rios1337@...>
          Testado.

          Não lança nenhuma RuntimeException e debugando o código simplesmente passa devolvendo false.


          2009/11/11 Alex Rios <alex.rios1337@...>

          Vou tentar fazer isso, mas já adiantando ambos os códigos que eu fiz estou rodando direto do eclipse, a permissão para acesso ao diretório provavelmente não iria variar.

          De qualquer forma tentarei a dica.

          2009/11/11 Andre Fonseca <aoqfonseca@...>

           

          Alex,

          Por acaso o seu sistema não lança alguma exceção ?

          Tenta colocar o seu trecho de código dentro de um try catch pegando por RuntimeException.

          Como já sugeriram  pode ser algo relacionado a permissão.

          Faz um debug para ver oque pode estar dando errado !

          Abraços
          Andre Fonseca

          On Wed, Nov 11, 2009 at 5:23 PM, Alex Rios <alex.rios1337@...> wrote:
           

          Criei um metodo main e refiz as operações do meu método e roda numa boa.
          Porém dentra da minha aplicação ele simplesmente não move.

          O que eu queria saber é, por quais motivos essa operação falha?

          2009/11/11 Andrei Vajgel <vajgel@...>

           

          Tirado do Javadoc do método renameTo(File dest):


          Whether or not this method can move a file from one filesystem to another is platform-dependent. The return value should always be checked to make sure that the rename operation was successful.

          Andrei

          On Wed, Nov 11, 2009 at 5:08 PM, Alex Rios <alex.rios1337@...> wrote:
           

          Ola Pessoal,

          Queria saber se alguem já passou por isso.

          Criei um metodo para mover meu arquivos para um diretorio especifico, porém está retornando false, em todas as minhas tentativas.

          public void moveFile(File file) {
                  File destination = new File("C:/opt/testepc/proc/" + file.getName());
                  log.info("moving file" + file.getName() + "...");
                  if(file.renameTo(destination)){
                      log.info(file.getName() + " moved successfully.");           
                  }else{
                      log.info(file.getName() + " cannot be moved.");
                  }
              }


          Algum palpite?
          --
          Atenciosamente,
          Alex Rios





          --
          Atenciosamente,
          Alex Rios



          --
          Abraços Sinceros e Agradecidos
          Andre Fonseca
          http://www.andrefonseca.net



          --
          Atenciosamente,
          Alex Rios



          --
          Atenciosamente,
          Alex Rios



          --
          Atenciosamente,
          Alex Rios




          --
          Abraços Sinceros e Agradecidos
          Andre Fonseca
          http://www.andrefonseca.net




          --
          Atenciosamente,
          Alex Rios




          --
          Abraços Sinceros e Agradecidos
          Andre Fonseca
          http://www.andrefonseca.net
        • Andre Fonseca
          Opa, Última mensagem saiu com erro de português com detalhe comprometedor : Dando vi .... estou me sabotando .... ... Corrigindo, Olhando diversos sites por
          Message 4 of 14 , Nov 11, 2009
          • 0 Attachment
            Opa,

            Última mensagem saiu com erro de português com detalhe comprometedor : "Dando vi .... estou me sabotando".... 

            :D 

            Corrigindo,

            Olhando diversos sites por ai , vi que ...


            ABraços


            2009/11/11 Andre Fonseca <aoqfonseca@...>
            Alex,

            Dando vi que dentro da api commons do pessoal da Apache, na parte de IO, existe uma classe FileUtils que tem todos métodos de manipulação de arquivos, inclusive, a sua desejada move.

            Te sugiro duas coisas : primeiro pega o jar e veja se ele funciona dentro do seu projeto. Como é uma api amplamente testada e usada, possivelmente, caso ela não funcione, evidenciara que existe algo com sua aplicação ou contexto (diretorio, so, etc.... ) 

            Caso funcione, você pode usá-lo ou tentar abrir seu código (baixar o fonte e olhar) para ver como foi implementado e fazer igual com suas simplificações e customizações. 


            Espero que tenha te ajudado. Sei como isso dá dor de cabeça. 

            Abraços
            Andre Fonseca

            2009/11/11 Alex Rios <alex.rios1337@...>
             


            Mas para ter o mesmo efeito eu ainda teria que fazer file.delete();

             
            2009/11/11 Andre Fonseca <aoqfonseca@...>
             

            Uma solução um tanto tosca seria fazer como "antigamente": 


            1. Pegar o seu file que deseja mover
            2. Criar um arquivo para onde deseja escrever
            3. Ler todo o conteúdo do primeiro arquivo e escrevê-lo no segundo
            4. Fechar os dois stream.
            Sei também que dentro da nova api de io, dentro de Channels (não tenho certeza) você consegue fazer cópias de arquivo e mover. Dá uma olhada no javadoc. 


            Espero, sinceramente, ter ajudado

            Atenciosamente
            Andre Fonseca


            2009/11/11 Alex Rios <alex.rios1337@...>
             

            Achei uma solução para o problema:

            Se tiver algo bloqueando ele, recolha o lixo com System.gc();

            Em todo caso, pedidos ao sistema operacional são somente pedidos, não quer dizer que ele os cumpra imediatamente.


            Alguem vê alguma solução melhor?


            2009/11/11 Alex Rios <alex.rios1337@...>
            Testado.

            Não lança nenhuma RuntimeException e debugando o código simplesmente passa devolvendo false.


            2009/11/11 Alex Rios <alex.rios1337@...>

            Vou tentar fazer isso, mas já adiantando ambos os códigos que eu fiz estou rodando direto do eclipse, a permissão para acesso ao diretório provavelmente não iria variar.

            De qualquer forma tentarei a dica.

            2009/11/11 Andre Fonseca <aoqfonseca@...>

             

            Alex,

            Por acaso o seu sistema não lança alguma exceção ?

            Tenta colocar o seu trecho de código dentro de um try catch pegando por RuntimeException.

            Como já sugeriram  pode ser algo relacionado a permissão.

            Faz um debug para ver oque pode estar dando errado !

            Abraços
            Andre Fonseca

            On Wed, Nov 11, 2009 at 5:23 PM, Alex Rios <alex.rios1337@...> wrote:
             

            Criei um metodo main e refiz as operações do meu método e roda numa boa.
            Porém dentra da minha aplicação ele simplesmente não move.

            O que eu queria saber é, por quais motivos essa operação falha?

            2009/11/11 Andrei Vajgel <vajgel@...>

             

            Tirado do Javadoc do método renameTo(File dest):


            Whether or not this method can move a file from one filesystem to another is platform-dependent. The return value should always be checked to make sure that the rename operation was successful.

            Andrei

            On Wed, Nov 11, 2009 at 5:08 PM, Alex Rios <alex.rios1337@...> wrote:
             

            Ola Pessoal,

            Queria saber se alguem já passou por isso.

            Criei um metodo para mover meu arquivos para um diretorio especifico, porém está retornando false, em todas as minhas tentativas.

            public void moveFile(File file) {
                    File destination = new File("C:/opt/testepc/proc/" + file.getName());
                    log.info("moving file" + file.getName() + "...");
                    if(file.renameTo(destination)){
                        log.info(file.getName() + " moved successfully.");           
                    }else{
                        log.info(file.getName() + " cannot be moved.");
                    }
                }


            Algum palpite?
            --
            Atenciosamente,
            Alex Rios





            --
            Atenciosamente,
            Alex Rios



            --
            Abraços Sinceros e Agradecidos
            Andre Fonseca
            http://www.andrefonseca.net



            --
            Atenciosamente,
            Alex Rios



            --
            Atenciosamente,
            Alex Rios



            --
            Atenciosamente,
            Alex Rios




            --
            Abraços Sinceros e Agradecidos
            Andre Fonseca
            http://www.andrefonseca.net




            --
            Atenciosamente,
            Alex Rios




            --
            Abraços Sinceros e Agradecidos
            Andre Fonseca
            http://www.andrefonseca.net



            --
            Abraços Sinceros e Agradecidos
            Andre Fonseca
            http://www.andrefonseca.net
          • Lucio Rodriguez
            Oi, renameTo nao funciona quando os arquivos fonte e destino sao considerados em filesystems diferentes. Em particular nao funciona com NFS ou Samba. A solucao
            Message 5 of 14 , Nov 12, 2009
            • 0 Attachment
              Oi,

              renameTo nao funciona quando os arquivos fonte e destino sao
              considerados em filesystems diferentes.
              Em particular nao funciona com NFS ou Samba.

              A solucao é usar o FileUtils do pacote da Apache
              commons.io
              Dentro tem varia opcoes de move.

              Lucio
            • Alex Rios
              Estranho que chamando o Garbage antes de executar a instrução funciona. Bom saber dessa informação do filesystem. 2009/11/12 Lucio Rodriguez
              Message 6 of 14 , Nov 12, 2009
              • 0 Attachment
                Estranho que chamando o Garbage antes de executar a instrução funciona.
                Bom saber dessa informação do filesystem.

                2009/11/12 Lucio Rodriguez <lucio@...>
                 

                Oi,

                renameTo nao funciona quando os arquivos fonte e destino sao
                considerados em filesystems diferentes.
                Em particular nao funciona com NFS ou Samba.

                A solucao é usar o FileUtils do pacote da Apache
                commons.io
                Dentro tem varia opcoes de move.

                Lucio




                --
                Atenciosamente,
                Alex Rios
              Your message has been successfully submitted and would be delivered to recipients shortly.