java.nio.fichier.Chemin d'accès pour les Url?
Java7 livré avec un défaut Chemin mise en œuvre pour les fichiers locaux. Est-il un Chemin de mise en œuvre pour les Url?
Par exemple, je devrais être en mesure de copier une ressource distante en utilisant le code suivant:
Path remote = Paths.get(new URI("http://www.example.com/foo/bar.html"));
Path local = Paths.get(new URI("/bar.html"));
Files.copy(remote, local);
Actuellement, ce lève java.nio.file.FileSystemNotFoundException: Provider "http" not installed
. Je pourrais les mettre en œuvre moi-même mais je préfère ne pas réinventer la roue.
- Ce qui va à l'encontre de Fichiers.copier(InputStream, Chemin d'accès)? N'URL constitue un chemin dans le monde qu'est le web? Ou sont-ils plus comme pointeur? Qu'êtes-vous susceptible de gagner?
- Ma bibliothèque a besoin de retourner opaque Chemins d'accès pour les utilisateurs. Ils peuvent copier ces (lecture seule) Chemins d'accès au système de fichiers local sans avoir besoin de connaître ou de soins, ou si le fichier réside localement (c'est à dire dans une base de données) ou à distance (serveur web). InputStreams sont des attributs manquants j'aimerais offrir mes utilisateurs, tels que le nom de fichier ou de la dernière modification d'horodatage.
- Compris, mais ce que les utilisateurs voient pas nécessairement être traduit par l'implémentation sous-jacente.
- Je ne comprends pas. Que voulez-vous dire?
- Bien que les utilisateurs peuvent le voir comme un chemin d'accès, vous n'avez pas nécessairement à utiliser le nouveau système de fichiers de l'architecture à mettre en œuvre. Des choses comme les inscriptions à l'annuaire, ne sont probablement pas permis de toute façon. Cela ne veut pas dire que vous ne pouvez pas, mais la mise en œuvre, il peut ne pas être en vaut la peine.
Vous devez vous connecter pour publier un commentaire.
Il semble que ce que vous êtes vraiment essayer de faire est d'accomplir ce que FTP n' - copier des fichiers d'un endroit à l'autre. Je vous suggère de trouver de meilleures façons de le faire avec FTP existant bibliothèques de code.
Uri ne sont pas des chemins de système de fichiers, de sorte que vous ne pouvez pas les traiter comme tels. Ils sont des adresses/resource locators que, quand vous y allez avec votre navigateur (ou un autre client qui les gère), ils déclenchent une action telle que définie par le serveur qui est derrière eux. Il n'y a pas de norme pour ce que ce serveur n', d'où la souplesse de services web. Par conséquent, si votre serveur est en train de faire pour accepter les requêtes HTTP de cette manière à faciliter les copies de fichiers, vous allez devoir faire vos propres, et de passer le fichier de données dans une requête POST.
Pour le dire d'une autre façon, (1) ne pas traiter les Uri comme ils sont chemins de système de fichiers - ils ne le sont pas, (2) trouver un FTP bibliothèque pour copier des fichiers et/ou (3) si vous voulez vraiment de construire un service web qui fait cela, abstrait, les détails de la copie de fichier via une requête POST. Si vous n' #3 comprendre que ce que votre bâtiment est assez proche de la coutume, et qu'il ne fonctionnera probablement sur un sous-ensemble de sites qui suivent votre conception particulière (c'est à dire ceux que vous créez vous-même). Il n'y a pas de standard d'un ensemble de paramètres ou "copie de fichiers" via la commande POST, je suis conscient de que vous pouvez utiliser pour faire de cette "fonctionne" - vous allez avoir à faire correspondre votre requête HTTP avec le service web sur le serveur.
Path
pour un classpath de ressources, ce qui serait très gentil. Que pensez-vous de cela? Je pense que ce serait bien, parce qu'unPath
est beaucoup plus agréable que deURL
.J'ai eu à traiter un problème similaire et a écrit une petite méthode pour résoudre ce problème, vous pouvez découvrir ci-dessous.
Il fonctionne très bien pour la concaténation de l'URL relative et suffixes. Soyez prudent de ne pas donner suffixe absolu en raison du comportement de l'URI résoudre fonction.