Lectura desde System.in-Java
input (8)
Esta pregunta ya tiene una respuesta aquí:
No estoy seguro de cómo debe leer desde la entrada del sistema desde un archivo Java.
Quiero poder llamar a java myProg < file
Donde el archivo es lo que quiero que se lea como una cadena y se le da a myProg en el método principal.
¿Alguna sugerencia?
Bueno, puedes leer System.in
mismo ya que es un InputStream
válido. O también puede envolverlo en un BufferedReader
:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
En Java, la entrada de la consola se realiza leyendo desde System.in . Para obtener una secuencia basada en caracteres que está conectada a la consola, ajuste System.in en un objeto BufferedReader . BufferedReader admite una secuencia de entrada en el búfer. Su constructor más comúnmente utilizado se muestra aquí:
BufferedReader(Reader inputReader)
Aquí, inputReader es la secuencia que está vinculada a la instancia de BufferedReader que se está creando. Reader es una clase abstracta. Una de sus subclases concretas es InputStreamReader , que convierte bytes en caracteres.
Para obtener un objeto InputStreamReader que esté vinculado a System.in, use el siguiente constructor:
InputStreamReader(InputStream inputStream)
Como System.in hace referencia a un objeto de tipo InputStream , puede usarse para inputStream. Poniéndolo todo junto, la siguiente línea de código crea un BufferedReader que está conectado al teclado:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Después de que se ejecuta esta instrucción, br es una secuencia basada en caracteres que está vinculada a la consola a través de System.in.
Esto está tomado del libro Java- The Complete Reference by Herbert Schildt
Leería desde System.in
como lo haría con la entrada de teclado usando, por ejemplo, InputStreamReader o Scanner .
Probablemente estás buscando algo como esto.
FileInputStream in = new FileInputStream("inputFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
Puede usar System.in
para leer desde la entrada estándar. Funciona igual que ingresarlo desde un teclado. El sistema operativo maneja pasar de archivo a entrada estándar.
class MyProg {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Printing the file passed in:");
while(sc.hasNextLine()) System.out.println(sc.nextLine());
}
}
Puedes llamar a java myProg arg1 arg2 ...
:
public static void main (String args[]) {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
}
Use System.in, es un InputStream que solo sirve para este propósito
class myFileReaderThatStarts with arguments
{
class MissingArgumentException extends Exception{
MissingArgumentException(String s)
{
super(s);
}
}
public static void main(String[] args) throws MissingArgumentException
{
//You can test args array for value
if(args.length>0)
{
// do something with args[0]
}
else
{
// default in a path
// or
throw new MissingArgumentException("You need to start this program with a path");
}
}