Eclipse de la lecture de l'entrée standard stdin (le Système.en) à partir d'un fichier
Est-il possible pour Eclipse pour lire stdin à partir d'un fichier?
- Toujours pas 3.5.2 pour l'entrée. Est-ce soulevée comme une éclipse bug?
- bugs.eclipse.org/bugs/show_bug.cgi?id=155411
Vous devez vous connecter pour publier un commentaire.
Pur Java
Vous pouvez rediriger Système.avec une seule ligne de code:
Voir Système.setIn().
Eclipse config
Dans Eclipse 4.5 ou une version ultérieure, le lancement de la boîte de dialogue de configuration peuvent ensemble du Système.pour lire à partir d'un fichier. Voir l'annonce ici.
[Mise à jour] Comme il a été souligné dans les commentaires, cette réponse était trompeuse, j'ai donc mis à jour pour corriger les erreurs. [/Mise à jour]
Sur le coup ou l'invite de commandes que vous pouvez faire:
C:\myprogramm < file.txt
(Windows) ou./myprogramm < file.txt
(Linux)Malheureusement dans Eclipse, il n'est pas possible d'obtenir le même résultat, car il n'existe aucune option pour lier le stdin d'un fichier dans eclipse. Au lieu de cela, vous aurez à ouvrir manuellement un flux de fichier dans votre code, puis de les lire à partir de la place. Une façon de faire cela est d'utiliser un programme d'argument pour l'activer et une autre avec le fichier de paramètre. Voir Scott réponse sur ce genre de code que vous devez ajouter à analyser l'option-d à partir du programme tableau d'arguments.
Quand vous voulez pointer vers un fichier à l'intérieur de votre Projet Eclipse, vous devez être prudent pour obtenir le droit d'emplacement et de l'utilisation de l' ${resource_loc:} variable:
bien sûr, vous pouvez aussi mettre un chemin absolu:
La resource_loc paramètre se rapporte à votre espace de travail. C'est le dossier où tous vous projets eclipse sont stockés dans. À partir de là, vous avez encore de référence de votre dossier de projet et ensuite le fichier que vous souhaitez charger.
Vous pouvez avoir à modifier la barre de direction, en fonction de si vous utilisez Linux ou Winodws.
2015 mise à jour
Il y a une nouvelle Eclipse version d'Eclipse 4.5 (Mars), qui a fixé la question!
C'est l'annonce et la description de la fonction: http://eclipse.org/mars/noteworthy/#_assigning_stdin_to_a_file
Comme prévu, c'est une nouvelle option de la juste sorti de l'éclipse de 4,5 et ne seront donc pas travailler dans une version plus ancienne.
Scanner sc = new Scanner(System.in);
avec les paramètres configurés fonctionne parfaitement. Pour être exact, vous pouvez trouver l'écran ci-dessus en Run > Exécuter les Configurations > onglet Commun.Sur l'onglet "général" de la boîte de dialogue exécuter, sous la rubrique "Entrée et de Sortie Standard" il y a une case à cocher pour "fichier". mais il semble que ce soit uniquement pour la sortie...
Je m'attends à le voir 2 champs des fichiers de là, l'un pour la norme, un standard avec l'ajout des options.
Standard Input and Output
Vous aurez besoin de modifier votre code quelques exemples de ce travail au sein d'eclipse. Les autres réponses ci-dessus n'a pas fonctionné quand j'ai essayé. Un autre que j'ai vu dire de changer Exécuter..>onglet Commun>Entrée et de Sortie Standard>Fichier seulement changé la le stdout de comportement pour le fichier, pas de l'entrée.
La solution était de prendre le "-d" option pour une solution viable. Si vous ne mettez rien dans les arguments de programme il va juste être passé dans votre main. Donc ce que vous pouvez faire au début de la main est quelque chose comme ceci:
Vous aurez toujours besoin de définir votre programme d'arguments dans la course.. menu comme décrit dans cette réponse.
public static void main(String [] args)
méthode, alors vous n'avez pas besoin de vérifierargs
pour les nuls - il contiendra un tableau vide comme un minimum.La solution pour moi (en cours d'exécution sur un Mac, à l'aide d'Eclipse CDT pour une application C) a été d'ajouter "< path/to/somefile" à la fin d'autres arguments dans les "Arguments" de l'onglet "Run Configuration" boîte de dialogue.
Également vérifier ce autre question une réponse impliquant le lancement d'un programme Java dans un état suspendu et puis attacher le débogueur à l'aide d'Eclipse.
Je ne vois pas une belle façon de le faire en utilisant le standard Eclipse boîte de dialogue Exécuter. Cependant, vous pourriez être en mesure de le faire avec un outil Externe lanceur et utiliser la norme "< infile" ou la syntaxe de l'appel une .bat/.sh script pour le faire pour vous.
Il n'est pas automatisé, qui est ce que je devine que vous voulez, mais vous pouvez copier & coller le contenu de votre infile à l'Éclipse de la console lorsque vous lancez votre programme.
en configuration debug/arguments/arguments du programme:
fonctionne bien pour moi.
Pour linux:
Je pense que, le plus simple est d'écrire un sh-script.
1) écrire run.sh comme ceci:
votre programme avec params < input.txt
2) Dans l'Eclipse de configuration du profil préciser
[onglet Principal] C++ Exécuter l'Application = /bin/sh
[onglet Arguments] Programme d'Arguments = run.sh
Que c'est. Lorsque vous exécutez votre projet, vous pourrez voir le script de sortie dans l'eclipse de la console.
Vous pouvez faire quelque chose de similaire dans Windows.
Ce n'est étonnamment pas pris en charge dans Eclipse et il semble qu'il y a pas de plans actuels pour l'ajouter. Voir https://bugs.eclipse.org/bugs/show_bug.cgi?id=155411 de suivre et de voter.
Je vais mettre à jour ici si ils ne la mettre en œuvre.
Ce que j'ai fait était de créer une Fourmi cible et de le lancer en tant que "Exécuter en Externe" de l'Eclipse, voici les étapes:
res\in.txt
et un pour la sortie:res\out.txt
Créer un
build.xml
avec les objectifs dont vous avez besoin (c'est juste un exemple):Dans Eclipse, allez à:
Run->External Tools->External Tools Configurations->Ant Build-> New Launch Configuration
utiliser la configuration suivante:Section Main
Buildfile:
${workspace_loc:/Tests/build.xml}
Répertoire De Base:
${workspace_loc:/Tests}
*Remarque: les Tests est le nom de mon projet Eclipse
Vous pouvez maintenant exécuter votre projet en cliquant sur dans la course Extenal barre d'outils bouton et modifier l'entrée ou la sortie des fichiers que vous avez besoin