J'ai une fonction qui accepte File comme argument. Je ne veux pas créer / écrire un nouveau fichier (je n'ai pas d'accès en écriture au système de fichiers) afin de transmettre mes données de chaîne à la fonction. Je dois ajouter que les données String n'existent pas dans un fichier (je ne peux donc pas lire mes données à partir d'un fichier).
Puis-je utiliser des flux et les «convertir» en objets File?
File
objet? Comme les réponses l'ont indiqué, unFile
objet est comme une référence à un emplacement dans le système de fichiers, et serait donc difficile à simuler sans un fichier réel. Si, cependant, votre fonction a pris unFileReader
ou unFileInputStream
, vous pouvez facilement modifier le code pour accepter l'entrée non-fichier.Réponses:
Non; les instances de classe
File
représentent un chemin dans un système de fichiers. Par conséquent, vous ne pouvez utiliser cette fonction qu'avec un fichier. Mais peut-être y a-t-il une surcharge qui prend un à laInputStream
place?la source
Habituellement, lorsqu'une méthode accepte un fichier, il existe une autre méthode à proximité qui accepte un flux. Si ce n'est pas le cas, l'API est mal codée. Sinon, vous pouvez utiliser des fichiers temporaires, pour lesquels l'autorisation est généralement accordée dans de nombreux cas. S'il s'agit d'applet, vous pouvez demander une autorisation en écriture .
Un exemple:
la source
Un objet File en Java est une représentation d'un chemin vers un répertoire ou un fichier, pas le fichier lui-même. Vous n'avez pas besoin d'avoir un accès en écriture au système de fichiers pour créer un
File
objet, vous n'en avez besoin que si vous avez l'intention d'écrire réellement dans le fichier (en utilisant un FileOutputStream par exemple)la source
La
File
classe représente «l'idée» d'un fichier, pas un descripteur réel à utiliser pour les E / S. C'est pourquoi laFile
classe a une.exists()
méthode, pour vous dire si le fichier existe ou non. (Comment pouvez-vous avoir unFile
objet qui n'existe pas?)En revanche, la construction de a
new FileInputStream(new File("/my/file"))
vous donne un flux réel à partir duquel lire les octets.la source
Utilisez un lecteur de fichiers pour charger le fichier, puis écrivez son contenu dans un tampon de chaîne.
exemple
Le lien ci-dessus vous montre un exemple de la façon d'accomplir cela. Comme le disent d'autres articles sur cette réponse, pour charger un fichier en mémoire, vous n'avez pas besoin d'un accès en écriture tant que vous ne prévoyez pas de modifier le fichier réel.
la source