8
votes

Comment transmettre un fichier texte comme un argument?

im essayant d'écrire un programme pour lire un fichier texte via args, mais lorsque je l'exécute, il est toujours indiqué que le fichier ne peut pas être trouvé, même si je l'ai placé dans le même dossier que le Main.java que je suis en marche. Est-ce que quelqu'un connaît la solution à mon problème ou une meilleure façon de lire un fichier texte?


2 commentaires

Je supposerais que si l'entrée est transmise en tant que programme Arg, vous souhaitez passer une entrée arbitraire au programme. Est-ce exact?


Umm pas vraiment. Parlez-vous de méthodes ou de fonctions? Je parle d'une classe IM qui passe dans un argument et lorsque j'exécute la méthode principale, il devrait lire le fichier texte, mais ce n'est pas le cas. Mon code est scanner SC1 = nouveau scanner (nouveau fichier (args [0])); Lors du débogage, cela ne pouvait même pas passer cette ligne.


7 Réponses :


1
votes

Essayez de donner un chemin absolu sur le nom de fichier.

Aussi, postez le code afin que nous puissions voir ce que vous essayez exactement.


2 commentaires

Il ne peut pas être transmettre cette ligne: scanner sc1 = nouveau scanner (nouveau fichier (args [0])); et j'ai passé mon fichier texte comme le premier Arg


La combinaison des lignes peut aider à raccourcir le code et éventuellement améliorer les performances (vitesse), mais lors du débogage, il contribue à scinder les choses (c.-à-d. NE PAS incorporer des constructeurs au sein des constructeurs). Créez un objet de fichier, voyez s'il s'agit de l'endroit où le programme déclenche. Sinon, passez ensuite l'objet de fichier à Scanner (dans une ligne séparée) et voyez quel type d'erreur est lancé.



0
votes

Si vous utilisez Eclipse (ou une IDE similaire), le problème provient du fait que votre programme est exécuté à partir de quelques annuaires ci-dessus où se trouve la source réelle. Essayez de déplacer votre fichier de niveau ou de deux dans l'arborescence du projet.

Vérifiez Cette question Pour plus de détails. < / p>


0 commentaires

0
votes

Si vous mettez le fichier et la classe travaillant avec elle sous le même paquet, pouvez-vous utiliser ceci: xxx

Il vous aidera si vous lisez des chargeurs de classes.


0 commentaires

1
votes

Lorsque vous ouvrez un fichier avec un nom de fichier relatif dans Java (et en général), il l'ouvre relatif au répertoire de travail.

Vous pouvez trouver le répertoire de travail actuel de votre processus en utilisant P>

String workindDir = new File(".").getAbsoultePath()


1 commentaires

Le répertoire de travail actuel est également disponible via la propriété système "utilisateur.dir".



9
votes

Ne pas utiliser de chemin relatifs dans java.io.file .

Il deviendra relatif au répertoire de travail actuel qui dépend de la manière dont vous exécutez l'application, ce qui n'est pas contrôlable à l'intérieur de votre application. Cela ne conduira que de problèmes de portabilité. Si vous l'exécutez à partir de l'Eclipse intérieure, le chemin sera relatif à / chemin / chemin / à / Eclipse / Espace de travail / ProjectName . Si vous l'exécutez à partir de la console de commande intérieure, il sera relatif au dossier ouvert actuellement (même si lorsque vous exécutez le code par un chemin absolu!). Si vous l'exécutez en doublelecliquant le pot, il sera relatif au dossier racine du pot. Si vous l'exécutez dans un serveur Web, il sera relatif au / chemin / path / to / webserver / binaires . Etc.

Utilisez toujours des chemins absolus dans java.io.file , pas d'excuses.

Pour meilleure portabilité et moins de maux de tête avec des chemins absolus, placez simplement le fichier Un chemin couvert par le parcours d'exécution (ou ajoutez son chemin à la classe d'exécution). De cette façon, vous pouvez obtenir le fichier par Classe # GetResource () ou son contenu par Classe # GetResourceastream () . Si c'est dans le même dossier (paquet) comme votre classe actuelle, il est déjà dans la classe de classe. Pour y accéder, juste faire: xxx

ou xxx


2 commentaires

Vous pouvez spécifier le répertoire de travail dans Eclipse. C'est dans la boîte de dialogue sous "Courez comme". C'est un moyen d'utiliser des chemins relatifs et d'obtenir un comportement raisonnable à l'intérieur de l'éclipse.


Certes, il y a toujours des solutions de contournement et de canards, mais vous ne voulez vraiment pas que votre demande soit dépendante de manière permanente de cela quand il y a beaucoup de meilleures façons.



0
votes

La solution la plus simple consiste à créer un nouveau fichier, puis voir où se trouve le fichier de sortie. C'est le bon endroit pour mettre votre fichier d'entrée.


0 commentaires

0
votes

dire que j'ai un fichier texte INPUT.TXT STRT> situé sur le bureau et INPUT.TXT a le contenu suivant

i came
i saw 
i left


0 commentaires