Java: Utilisation de la classe du scanner pour lire l'entrée d'un fichier sans tuyauterie
-
28-09-2019 - |
Question
J'ai actuellement une mise en œuvre d'un programme où je l'ai lu dans l'entrée en utilisant la classe du scanner. Nombre entier de nombre entier. Je le fais en canalisant le fichier d'entrée via la ligne de commande.
programme java
Je dois éviter la tuyauterie de l'entrée en utilisant un argument sur la ligne de commande pour ouvrir le fichier dans mon programme.
programme java --file = input.txt
ou quelque chose de similaire. Je comprends que je pourrais analyser l'argument de ligne de commande, extraire le texte « input.txt », puis utiliser une classe comme « BufferedReader » ou quelque chose de similaire pour lire le fichier.
Je suis juste curieux de savoir s'il est loin d'utiliser le fichier d'entrée (pas de tuyauterie) et utilisez toujours la classe du scanner. Qui signifie que je ne voudrais pas changer sur mon nextInt () et d'autres appels.
La solution
Étant donné que les arguments sont tout simplement pas evaulated mais passés à votre méthode main(String[] args)
sans travail au milieu de votre seule option est d'analyser l'argument, extraire le nom du fichier input.txt
et l'ouvrir comme un flux de fichier normal.
Je ne vois pas comment il devrait en déduire qu'un fichier doit être ouvert et passé comme un tuyau sans être un tuyau .. vous pouvez facilement utiliser Scanner
avec un argument File
sans se soucier de quoi que ce soit ..
public Scanner(File source) throws FileNotFoundException
construit un nouveau scanner qui produit des valeurs numérisées à partir du fichier spécifié. Octets du fichier sont convertis en caractères à l'aide de charset par défaut de la plate-forme sous-jacente.