Créer un object File en mémoire à partir d’une chaîne en Java

J’ai une fonction qui accepte File comme argument. Je ne veux pas créer / écrire un nouveau fichier (je n’ai pas access en écriture au système de fichiers) afin de transmettre mes données de chaîne à la fonction. Je devrais append que les données Ssortingng n’existent pas dans un fichier (je ne peux donc pas lire mes données à partir d’un fichier).

Puis-je utiliser Streams et les “convertir” en objects File?

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 InputStream place?

Habituellement, lorsqu’une méthode accepte un fichier, il existe une autre méthode à proximité qui accepte un stream. Si ce n’est pas le cas, l’API est mal codée. Sinon, vous pouvez utiliser des fichiers temporaires, où l’autorisation est généralement accordée dans de nombreux cas. S’il s’agit d’une applet, vous pouvez demander une autorisation en écriture .

Un exemple:

 try { // Create temp file. File temp = File.createTempFile("pattern", ".suffix"); // Delete temp file when program exits. temp.deleteOnExit(); // Write to temp file BufferedWriter out = new BufferedWriter(new FileWriter(temp)); out.write("aSsortingng"); out.close(); } catch (IOException e) { } 

Un object File en Java est une représentation d’un chemin d’access à un répertoire ou à un fichier, pas au fichier lui-même. Vous n’avez pas besoin d’avoir access en écriture au système de fichiers pour créer un object File , vous en avez besoin uniquement si vous avez l’intention d’écrire dans le fichier (en utilisant un FileOutputStream par exemple).

La classe File représente “l’idée” d’un fichier, pas un handle réel à utiliser pour les E / S. C’est pourquoi la classe File a une méthode .exists() , pour vous indiquer si le fichier existe ou non. (Comment pouvez-vous avoir un object File qui n’existe pas?)

En revanche, la construction d’un new FileInputStream(new File("/my/file")) vous donne un stream réel à partir duquel lire les octets.

 FileReader r = new FileReader(file); 

Utilisez un lecteur de fichier pour charger le fichier, puis écrivez son contenu dans un tampon de chaîne.

Exemple

Le lien ci-dessus vous montre comment accomplir cela. Comme les autres messages de cette réponse indiquent que vous devez charger un fichier en mémoire, vous n’avez pas besoin d’un access en écriture tant que vous ne prévoyez pas de modifier le fichier.