Achar o diretório raiz do SO

0 respostas
fradys

Olá a todos,

pessoal, é o seguinte: Estou tentando fazer um programa que precise que encontre uma pasta no sistema operacional, esta pasta eu ja crio anteriormente, mas como não quero amarrar a aplicação de jeito nenhum, pensei em escrever um método que fizesse uma busca pelos nós primários atrás dessa pasta específica, por exemplo:

C:\Teste\NovaPasta
G:\Teste\NovaPasta
F:\Teste\NovaPasta

E por ai vai… Seria ótimo desse jeito, o problema é que quando o programa tenta testar a pasta nos drives de CD ou disquete, então aparece aquela tela com 3 botões: “Tentar Novamente”, "Continuar"e “Cancelar”. E lógico que isso é péssimo para a boa execução do programa, eu tentei colocar um teste antes chamando a função que testa se o diretório tem permissão de escrita ( drives de CD não tem essa permissão, só de leitura ) só que não funcionou, coloquei a função que escrevi ( o nome da pasta vem como parâmetro ):

private File retornaDiretorio( String diretorio )
{

      File dir = null;
      File[] root;

      try
      {
         //Retorna um array de nós primários do SO
         root = File.listRoots();

         for ( int i = 0; i < root.length; i++ )
         {
            /*
             * Esse teste é para o drive de disquete
             * Não deixa que o drive de disquete seja acessado
             */
            if ( root[ i ].toString().equalsIgnoreCase( "A:\\" ) )
            {               
               continue;
            }
            //Testa se tem permissão de escrita

            if ( root[ i ].canWrite() )
            {
               dir = new File ( root[ i ] + diretorio );

               if ( dir.exists() )
               {                  
                  return dir;
               }
               else
               {
                  dir = null;
               }
            }

         }

      }
      catch ( Exception e )
      {
         mostraMensagem ( true , "Mensagem Default" , e.toString() );
      }

      return dir;
   }

Estou fazendo algo errado? Se alguêm já tenha passado por isso e tenha uma solução melhor acharia ótimo se postasse aqui!

Desde já agradeço a todos pela atenção!

Criado 27 de janeiro de 2007
Respostas 0
Participantes 1