2010-11-11 22 views
1

J'essaie d'obtenir des attributs de fichier présents dans un serveur Unix et quand je tape cette URL dans mon IE il affiche les fichiers dans l'architecture de dossier-dossier-répertoire.Y at-il un moyen d'accéder à http: // <someserver.com>: <portnumber> /logs.log.txt en utilisant le code Java dans Windows

Je prévois d'écrire un code pour un outil tel que je peux automatiser le processus d'obtention du fichier des attributs comme la date de modification du fichier, la taille du fichier, etc.

Y a-t-il des méthodes/façons de le faire? Est-ce que ce code de travail:

File file = New File("http://<someserver.com>:<portnumber>/logs/log.txt"); 
Date date = file.LastModifiedDate(); 
System.out.println("modifed date is"+date); 
+0

Le serveur UNIX est-il disponible en tant que lecteur mappé ou uniquement via HTTP? – Jason

+0

Les fichiers dans le serveur Unix sont accessibles uniquement via HTTP seulement .. le nom du fichier, date de modification récente, la taille sont poussés vers le serveur apache et affichés dans une application web et je peux voir les fichiers au format dossier-dossier-répertoire l'URL dans l'IE. – ManiVI

Répondre

1

Si le protocole de votre serveur prend en charge est que HTTP, je crains qu'il n'y ait aucun moyen facile de le faire. Vous devrez:

  • Parse le code HTML retourné, probablement à la recherche <a href= tags (en utilisant certains html parser, mais pas avec regex)
  • ouvrir ces liens avec new URL(url).openConnection(), lisez leurs cours d'eau, et faire récursive la même chose , jusqu'à ce qu'un fichier réel (et pas le répertoire) soit trouvé.

Mais cela ne vous donnera pas les attributs de fichier - seulement le nom et le contenu du fichier. Si vous voulez parcourir, vous avez besoin d'un protocole différent, comme FTP ou SCP.

+0

merci Bozho :) je vais travailler sur cela mais mon objectif principal est d'extraire la date de modification du fichier .. :) – ManiVI

0

Le protocole HTTP ne vous aidera pas ici. HTTP ne publie aucun attribut de fichier, sauf le Content-length (taille du fichier) et la valeur d'en-tête Last-Modified qui ne reflète pas nécessairement la date de modification du fichier. En outre, il peut ne pas être envoyé par le serveur HTTP du tout.

Votre meilleur pari serait d'utiliser une bibliothèque FTP par exemple celle de Apache Commons Net.

Si vous décidez d'utiliser cette bibliothèque, vous pouvez utiliser les propriétés du FTPFile class, par exemple la taille du fichier, la date du fichier et les permissions.

+0

Est-il possible d'utiliser FTPFile Class pour extraire la date de modification du fichier à partir du serveur UNIX ?? – ManiVI

+0

Il suffit de lire la documentation: Renvoie l'horodatage du fichier. C'est généralement l'heure de la dernière modification.