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? P>
7 Réponses :
Essayez de donner un chemin absolu sur le nom de fichier. p>
Aussi, postez le code afin que nous puissions voir ce que vous essayez exactement. p>
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é.
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. P>
Vérifiez Cette question Pour plus de détails. < / p>
Si vous mettez le fichier et la classe travaillant avec elle sous le même paquet, pouvez-vous utiliser ceci: Il vous aidera si vous lisez des chargeurs de classes. p> p>
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()
Le répertoire de travail actuel est également disponible via la propriété système "utilisateur.dir".
Ne pas utiliser de chemin relatifs dans 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 à Utilisez toujours des chemins absolus dans 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 ou p> java.io.file code>. / chemin / chemin / à / Eclipse / Espace de travail / ProjectName Code>. Si vous l'exécutez à partir de la console de commande intérieure, il sera relatif au dossier ouvert actuellement em> (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 code>. Etc. p> java.io.file code>, pas d'excuses. p> Classe # GetResource () Code> ou son contenu par Classe # GetResourceastream () Code> . 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: p>
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.
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. P>
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
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.