2010-07-23 16 views
5

He estado programando casualmente en Java por un tiempo, pero todavía tengo algunas preguntas candentes sobre los fundamentos. He oído que debería usar System.out.println() para mostrar datos de algunas personas, y otros me han dado diferentes ideas (como PrintStream u otra cosa). ¿Cuál es la mejor forma de imprimir en consola en Java?¿Debo usar System.out.println() o algo más?

Respuesta

14

System.outes a PrintStream.

Si su objetivo principal es interactuar con una consola, mire java.io.Console. Si su objetivo principal es tener algún tipo de registro, use un marco de registro como la API de registro de Java o log4j.

15

Si recién está empezando y quiere imprimir algunas cadenas en la consola, System.out.println() estará bien. Obtenga sus fundamentos y luego puede sumergirse en los puntos más finos de Java I/O.

+0

Quizás escribieron las bibliotecas de E/S de Java: P – wshato

1

Depende de lo que esté haciendo. Casi siempre sugiero usar la API de registro de Java (java.util.logging). System.out.println es más una "herramienta de depuración" pero incluso así usted tiene mucho más control sobre la salida utilizando la API de registro del JDK ...

0

Utilice log4j y la salida directa a stdout. Entonces es fácil cambiar a archivos de registro según sea necesario.

0

El uso de System.out directamente es la forma más simple y usualmente más eficiente. Si tiene mucho que imprimir, puede investigar usando BufferedOutputStream.

Hay algunas eficiencias que se obtienen al crear las cadenas para imprimir de manera más eficiente. Si se realiza una gran cantidad de concatenaciones, consulte StringBuilder.

2

System.out es bueno para imprimir en la consola. Sin embargo, descubrí que hacer el esfuerzo de usar java.util.logging era una mejor opción para mí. (O algún sistema de registro)

Depende de la información que intente mostrar. Si es para la interacción del usuario de la consola, System.out es perfecto. Si se trata de mostrar información de depuración, el registro probablemente sea el camino a seguir, ya que le permite tener un mayor control sobre las cosas si lo desea.

(Después de la configuración inicial, los servicios públicos de registro son casi tan transparente como el uso de System.out.)

0

yu puede establecer

System.setOut (nueva PrintStream ("all-my-sysouts -go-en-el-archivo.txt");

y luego hacer sysoyts ...

yu puede seguir usando baretail ...

esperanza esto ayuda ...

raj.

0

voy a sugerir a utilizar las API de registro de Java

0

Sí, la forma más sencilla y eficiente para imprimir en la consola es generalmente System.out.print() y System.out.println(), pero si usted tiene una gran cantidad de salida para enviar, System.out.println() puede ser ineficiente, ya que está almacenado en la línea y funciona mucho relacionado con el manejo de Unicode. Debido a su pequeño tamaño de búfer, System.out.println() no es adecuado para manejar muchas salidas repetitivas en modo batch. Cada línea se vacía de inmediato. En ese caso, es posible que desee utilizar un BufferedOutputStream o un BufferedWriter.

Es importante tener en cuenta que System.out no siempre va al la consola o terminal de la aplicación. System.out apunta al canal de salida estándar de la aplicación ; en C/C++ se llama stdout. Eso puede ir a la consola, pero también puede ir a cualquier lugar que el usuario decida enviarlo. Por ejemplo, un archivo y todo lo impreso en System.out terminará en el archivo my-app-output.txt.

Por lo tanto, si desea enviar una salida regular, use System.out. Si desea enviar un mensaje de error o notificación al usuario, con una gran oportunidad de ir a la consola, use System.err.print() y System.err.println().

No hay una forma portátil de obtener un canal para la consola 'real' en las versiones de Java anteriores a la 1.6. En 1.6, existe una clase de objeto específicamente para representar la consola: java.io.Console. Se puede obtener una referencia para este objeto único desde la clase del sistema usando la consola del método estático().

Pero si su requisito es depurar toda la aplicación, entonces como todo el mundo dijo que usar loggers es el mejor enfoque.