Obter tamanho de arquivo remoto

2 respostas
L

Olá pessoal, estou tendo uma dificuldade enorme em obter o tamanho de arquivos remotos.
O sistema consiste numa página onde lista os arquivos referentes a uma data, estes arquivos estão hospedados em outra máquina, mas na msm rede.
O fato é que em ASP funciona normal, mas em JAVA não.

Utilizando o código em asp abaixo funciona:

Dim fs,f,arquivo
Set fs = Server.CreateObject("Scripting.FileSystemObject")
arquivo = Server.MapPath("\")
Set f = fs.GetFile(arquivo & "/Arquivos/" & oRs.fields("arquivo1"))
Response.Write('Tamanho do arquivo: ' & f.Size)

Em java utilizando a classe File:

out.print("Tamanho do arquivo: ");
out.print(new File("\\\\computador\\wwwroot\\Arquivos\\" + arquivos.getArquivo1()).length());

Em java, já tentei por meio de URLConnection e por File, ambos não dão certo. Curiosamente localmente, o modo que faço, utilizando a classe File funciona, mesmo os arquivos estando num outro computador. Mas quando hospedo ele na máquina que fornece o serviço, que também está na rede, ele retorna 0.

Algum outro método, classe que possa suprir essa necessidade? OBRIGADO DESDE JÁ.

2 Respostas

B

Deve haver algum problema na permissão dada ao serviço que você está usando para rodar o seu método Java.

Que eu saiba, não há outra maneira de obter o tamanho que não o método “length” da classe java.io.File.

Note que o usuário que roda um programa ASP.NET é o usuário da rede logado na aplicação Web (que tem permissões diferentes de SYSTEM - isso é um recurso do IIS chamado de “impersonating”).

Pelo visto, se seu programa nem consegue obter o tamanho do arquivo remoto, não conseguirá abri-lo.

Você teria de instalar o programa Java (é o Tomcat ou o Glassfish?) para rodar como um usuário normal de rede, com senha e tudo, para que ele possa acessar recursos de rede. Infelizmente esse setup é um pouco inseguro, portanto esse usuário normal de rede deve também ter permissões limitadas.

import java.io.*;

class TamanhoArquivo {
    public static void main(String[] args) {
        // Funciona corretamente se rodar com um usuário com as permissões corretas.
        File dir = new File ("\\\\servidor\\share\\diretorio");
        File f = new File (dir, "arquivo.xml");
        System.out.println (f.length());
    }
}
L

bezier, obrigado pela resposta, estava suspeitando disso msm, já que não tem lógica apenas trocar a linguagem e funcionar…

Irei verificar uma saída configurando o Tomcat :slight_smile:

Tópico já pode ser fechado.

Criado 2 de dezembro de 2009
Ultima resposta 3 de dez. de 2009
Respostas 2
Participantes 2