2010-05-02 2 views
3

Si j'ai un programme Java simple qui traite des lignes de texte à partir de l'entrée standard, je peux courir avec le script suivant:alimentation entrée à un processus Java à partir d'un fichier batch

@Echo off 
java Test < file.txt 
pause 
exit 

Le script réoriente lignes d'entrée de fichier.txt dans le programme Java.

Y at-il un moyen que je puisse éviter d'avoir à utiliser un fichier séparé? Ou est-ce le moyen le plus simple?

Merci.

+0

Est-ce vous dites que vous voulez juste java pour rediriger votre entrée clavier à n'importe où? – Nitrodist

+0

Je me demandais s'il y avait un moyen d'envoyer plusieurs lignes d'entrée au programme Java sans utiliser de fichier. – YGL

+0

Est-ce que vous ne pouvez pas modifier votre main Java pour lire des arguments et simplement passer le (s) fichier (s) en paramètre (s) à la main? –

Répondre

4

Utilisez un pipe.

Cette application triviale Java se contente d'afficher les lignes de stdin:

public class Dump { 
    public static void main(String[] args) { 
    java.util.Scanner scanner = new java.util.Scanner(System.in); 
    int line = 0; 
    while (scanner.hasNextLine()) { 
     System.out.format("%d: %s%n", line++, scanner.nextLine()); 
    } 
    } 
} 

Invoqué avec ce fichier batch:

@ECHO OFF 
(ECHO This is line one 
ECHO This is line two; the next is empty 
ECHO. 
ECHO This is line four)| java -cp bin Dump 
PAUSE 

... il imprimera:

0: This is line one 
1: This is line two; the next is empty 
2: 
3: This is line four 
+0

Awesome. Je ne savais pas que je pourrais utiliser des parens pour canaliser plusieurs lignes. Merci. – YGL

0

Vous pouvez faire un simple:

$ java Test < file.txt 

Mais si vous avez besoin absolument la commande pause, vous devrez le faire sur un script ou un code de comportement pause dans la classe de test.

+0

Vous pouvez simplement faire 'java Test Joey

Questions connexes