He escrito un pequeño programa Java que toma argumentos de la línea de comandos y debería ser interactivo.
Cuando quiero probar con una entrada grande, quiero canalizar el contenido de un archivo a la JVM para usarlo como argumentos de entrada al programa, pero no quiero reemplazar la entrada estándar con el contenido del archivo.
Así que lo intenté
menos archivo | xargs -0 java -cp ... mypackage.ClassName
pero esto reemplaza a stdin con el contenido del archivo, creo que la parte interactiva del programa que usa BufferedReader.readLine () toma su contenido del archivo.
¿Hay alguna manera de que primero pueda canalizar el contenido del archivo a la JVM y luego volver a StdIn?
Estoy corriendo Ubuntu
Ejemplo de código:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String cmd;
while(true) {
try {
System.out.print(">");
cmd = br.readLine(); //becomes null if I start the program as above
PD. Sería mejor para el programa Java trabajar con archivos, pero quiero saber si esto es posible Ds.
java myclass "$(<some-file.txt)"
- pero este es un hack muy malo y debes modificar tu programa Java para tomar un nombre de archivo como argumento.
java -cp … --other-argument <contents-of-a-file> --another-argument mypackage.ClassName
? ¿Así que puedes analizar la línea de comandos para ese argumento? ¿Tal vez debería darnos un ejemplo de código mínimo de su programa Java? Qué es lo que tú De Verdad necesidad de lograrlo, es decir, qué hay en este archivo y por qué no puede simplemente darle a su programa la ruta del archivo y dejar que eso abra el archivo.