Instanciando File a partir de arquivo remoto

5 respostas
cain

Alguém sabe como instancio um objeto File a partir de um arquivo que está em uma outra maquina na rede interna?

tipo “\outramaquina\diretorio\arquivo.properties”
ou mesmo “\outramaquina\arquivo.properties” ?

[]'s
Luís

5 Respostas

T

Digamos que você possa abrir seu arquivo (usando o Notepad, por exemplo) com “\servidor\share\diretorio\arquivo.txt”.

Então:

String nomeArquivo = "\\servidor\share\diretorio\arquivo.txt";
File file = new File (nomeArquivo);
BufferedReader br = new BufferedReader (new FileReader (file));

Obs - isso só serve se o Java estiver rodando sob Windows, tentando acessar um arquivo em um “share” de uma máquina Windows, ou então uma máquina Unix/Linux rodando Samba. Se o Java estiver rodando sob Unix/Linux, você não pode usar essa sintaxe - o “share” deve estar “montado” no Unix/Linux.

cain

Funcionou não, no meu caso pode ser um diretorio tb, mas eu testei com um arquivo e não funcionou :frowning:

segue o codigo

diretorio = new File("\\tibet\pdf\RelatorioCertidaoNegativaPrestacaoContas.rep");
		System.out.println(diretorio.getName());
		for (int i = 0; i &lt diretorio.list().length; i++) {
				System.out.println(diretorio.list()[i]);
		}
T

Pode ser que você não tenha as permissões adequadas. Ou então que você esteja tentando ver o diretório errado. Copie o nome do diretório da barra de endereços do Windows Explorer, para ter certeza absoluta.

Dica - nunca faça isto:

for (int i = 0; i &lt diretorio.list().length; i++) {
 				System.out.println(diretorio.list()[i]);
 		}

É que "diretorio.list()" fica sempre relendo o diretório, o que pode ser muito lento, se o diretório tiver mais de 20 arquivos.
É melhor pegar a lista de arquivos e pô-la em uma variável temporária.

File[] arquivos = diretorio.listFiles();
    for (int i = 0;  i &lt arquivos.length; ++i) {
        System.out.println (arquivos[i]);
    }
cain

Funcionou pra um diretorio - acho q era permissão, mas no caso se eu colocar somente o host n funciona. tem um aforma de colocar o host da rede e ele listar os diretorios??

[]'s

T

Não se pode enumerar os “shares” de uma máquina usando “listFiles”. Para fazer isso é necessário o uso de alguma API do Windows que não sei exatamente qual é.

Criado 18 de agosto de 2006
Ultima resposta 21 de ago. de 2006
Respostas 5
Participantes 2