Comment obtenir un chemin/nom de fichier à partir d'un InputStream en Java?Chemin d'accès/nom de fichier à partir de InputStream
Répondre
Ce n'est pas possible. (pas à partir de FileInputStream dans l'API Java). Le constructeur FileInputStream
ne stocke pas ces informations dans tous les domaines:
public FileInputStream(File file) throws FileNotFoundException {
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkRead(name);
}
if (name == null) {
throw new NullPointerException();
}
fd = new FileDescriptor();
open(name);
}
Vous ne pouvez pas car le InputStream
peut ne pas avoir été un fichier ou un chemin d'accès. Vous pouvez implémenter votre propre InputStream
qui génère des données à la volée
Deux importants principes de conception orientée objet vous empêchent de faire ce que vous demandez: l'abstraction et l'encapsulation.
- Abstraction est le processus de définition d'un concept général qui a seulement les détails nécessaires à son utilisation dans un contexte particulier (plus de détails here). Dans cette situation, l'abstraction est
InputStream
, qui est une interface générale qui peut fournir des octets, indépendamment de la source de ces octets. L'abstraction d'unInputStream
n'a pas de concept de chemin de fichier; Cela ne concerne que les implémentations particulières deInputStream
. - L'encapsulation est le processus de masquage des détails d'implémentation d'une classe par les consommateurs/utilisateurs de cette classe. Dans cette situation particulière,
FileInputStream
encapsule les détails du fichier en cours de lecture car, en tant queInputStream
, cette information n'est pas pertinente pour l'utilisation. Le champ d'instancepath
est encapsulé et n'est donc pas disponible pour les utilisateurs de la classe.
Ceci étant dit, il est possible d'accéder à la variable path
si vous êtes prêt à accepter des limites importantes. Fondamentalement, l'essentiel est que vous pouvez vérifier si le InputStream
est, en fait, une instance de FileInputStream
et, si c'est le cas, utilisez la réflexion pour lire le champ d'instance path
. Je vais laisser de côté les détails de faire cet accès, car il est facilement décelable dans les docs Java et en ligne, et pas vraiment une bonne chose à faire dans la plupart des contextes. Puisque la question ne fournit pas de contexte expliquant pourquoi, il est difficile d'offrir des approches plus raisonnables.
- 1. Comment obtenir SelectableChannel à partir d'un InputStream?
- 2. JRuby: Créer Java InputStream ou byte [] à partir de RubyString
- 3. Chargement à partir de JAR en tant que InputStream?
- 4. Créer le chemin du fichier à partir de variables
- 5. Comment obtenir un nom de fichier à partir d'un chemin?
- 6. Supprimer le chemin d'accès à partir du nom de fichier
- 7. Obtenir le chemin d'accès complet sans nom de fichier à partir du chemin qui contient le nom de fichier
- 8. Comment obtenir l'InputStream de données décompressées à partir d'un InputStream de données GZIPed?
- 9. Obtention d'un chemin d'accès de fichier à partir d'un descripteur de fichier dans Windows
- 10. Inputstream à partir du serveur WAP, analyser les parties
- 11. Création d'une source de données à partir d'un tableau InputStream ou Byte
- 12. Chemin complet à partir de l'entrée de fichier à l'aide de jQuery
- 13. Comment obtenir un inputStream à partir d'un fichier xml dans le dossier resources xml dans Android
- 14. Comment convertir InputStream en fichier virtuel
- 15. Chemin absolu à partir de la poignée de la fenêtre
- 16. xcode chemin de fichier
- 17. Chemin d'accès du dossier à partir d'un fichier ASP
- 18. Android InputStream suite à une réécriture
- 19. Comment obtenir le chemin complet du fichier à partir d'une entrée de fichier
- 20. Contrôle de chemin de fichier
- 21. Renvoyer une mémoire mappée InputStream à partir d'un fournisseur de contenu?
- 22. Rechercher si InputStream de DataHandler est vide
- 23. chemin de fichier approprié d'un fichier texte à lire
- 24. rechercher un chemin de script appelant à partir d'une bibliothèque
- 25. Obtention du chemin d'accès d'origine à partir de FileStream
- 26. Comment mapper un chemin de fichier à partir d'un emplacement de dossier différent facilement?
- 27. chemin de fichier à partir de la requête sql dans drupal
- 28. ASP.NET Récupérer un chemin de fichier physique à partir de l'URL
- 29. Impossible d'obtenir le chemin de fichier correct à partir de JFileChooser
- 30. extrait le nom de fichier du chemin