2010-07-23 40 views
5

Tôi đã lập trình ngẫu nhiên trong Java một thời gian, nhưng tôi vẫn còn một số câu hỏi về các nguyên tắc cơ bản. Tôi đã nghe nói rằng tôi nên sử dụng System.out.println() để hiển thị dữ liệu từ một số người, và những người khác đã cho tôi những ý tưởng khác nhau (như PrintStream hoặc cái gì khác). Cách tốt nhất để in ra bàn điều khiển trong Java là gì?Tôi có nên sử dụng System.out.println() hoặc cái gì khác không?

Trả lời

14

System.out một PrintStream.

Nếu mục tiêu chính của bạn là tương tác với bảng điều khiển, hãy xem java.io.Console. Nếu mục tiêu chính của bạn là có một số loại ghi nhật ký, hãy sử dụng khung ghi nhật ký như API ghi nhật ký Java hoặc log4j.

15

Nếu bạn chỉ mới bắt đầu và muốn in một số chuỗi vào bảng điều khiển thì System.out.println() sẽ ổn. Nhận các nguyên tắc cơ bản của bạn xuống và sau đó bạn có thể đi sâu vào các điểm tốt hơn của Java I/O.

+0

Có thể họ đã viết thư viện Java I/O: P – wshato

1

Loại phụ thuộc vào những gì bạn đang làm. Hầu như lúc nào tôi cũng đề xuất sử dụng API ghi nhật ký Java (java.util.logging). System.out.println là nhiều hơn một "công cụ gỡ lỗi", nhưng thậm chí sau đó bạn có nhiều quyền kiểm soát hơn đối với đầu ra bằng cách sử dụng API ghi nhật ký của JDK ...

0

Sử dụng log4j và đầu ra trực tiếp tới stdout. Sau đó nó dễ dàng chuyển sang logfiles theo yêu cầu.

0

Sử dụng trực tiếp System.out là cách đơn giản và hiệu quả nhất. Nếu bạn có nhiều thứ để in, bạn có thể điều tra bằng cách sử dụng BufferedOutputStream.

Có một số hiệu quả có thể đạt được bằng cách tạo các Chuỗi được in hiệu quả hơn. Nếu có nhiều kết nối được thực hiện, hãy xem StringBuilder.

2

System.out rất tốt để in trên bảng điều khiển. Tuy nhiên, tôi thấy rằng việc sử dụng java.util.logging thay vào đó là một lựa chọn tốt hơn cho tôi. (Hoặc một số hệ thống đăng nhập.)

Tùy thuộc vào thông tin bạn đang cố hiển thị. Nếu nó dành cho giao diện người dùng, Console.out là hoàn hảo. Nếu nó hiển thị thông tin debug-ish, việc ghi nhật ký có lẽ là cách để đi vì nó cho phép bạn kiểm soát nhiều hơn đối với những thứ bạn cần.

(Sau khi ban đầu thiết lập, các tiện ích khai thác gỗ là gần như trong suốt như sử dụng System.out.)

0

yu có thể thiết lập

System.setOut (PrintStream mới ("all-my-sysouts -Go-in-này-file.txt");

và sau đó làm sysoyts ...

yu có thể theo dõi chúng bằng cách sử baretail ...

hy vọng điều này sẽ giúp ..

raj.

0

tôi sẽ gợi ý để sử dụng các API Logging Java

0

Vâng, cách đơn giản nhất và hiệu quả để in ra cửa sổ Console thường là System.out.print() và System.out.println() nhưng nếu bạn có một số lượng lớn đầu ra để gửi, System.out.println() có thể không hiệu quả, bởi vì nó được xếp hàng đệm và thực hiện rất nhiều công việc liên quan đến xử lý Unicode. Vì kích thước bộ đệm nhỏ của nó, System.out.println() không phù hợp để xử lý nhiều kết quả đầu ra lặp lại trong một chế độ hàng loạt. Mỗi dòng được xả ngay lập tức. Trong trường hợp đó, bạn có thể muốn sử dụng BufferedOutputStream hoặc BufferedWriter.

Điều quan trọng cần lưu ý là System.out không phải lúc nào cũng đi đến bảng điều khiển ứng dụng hoặc thiết bị đầu cuối. System.out trỏ tới kênh đầu ra tiêu chuẩn ứng dụng ; trong C/C++ nó được gọi là stdout. Điều đó có thể đi tới bàn điều khiển, nhưng nó cũng có thể đi bất cứ nơi nào mà người dùng quyết định gửi nó. Ví dụ một tập tin sau đó tất cả mọi thứ in ra System.out sẽ kết thúc trong tập tin my-app-output.txt.

Vì vậy, nếu bạn muốn gửi đầu ra thông thường, hãy sử dụng System.out. Nếu bạn muốn gửi thông báo lỗi hoặc thông báo người dùng, với cơ hội tuyệt vời truy cập vào bảng điều khiển, hãy sử dụng System.err.print() và System.err.println().

Không có cách nào để di chuyển kênh sang bảng điều khiển 'thực' ' trong các phiên bản Java trước 1.6. Trong 1.6, có một đối tượng lớp đặc biệt để đại diện cho giao diện điều khiển: java.io.Console. Tham chiếu đối tượng duy nhất này có thể lấy từ lớp Hệ thống bằng cách sử dụng bảng điều khiển phương thức tĩnh().

Nhưng nếu yêu cầu của bạn là gỡ lỗi toàn bộ ứng dụng thì mọi người đều nói rằng sử dụng nhật ký là cách tiếp cận tốt nhất.

Các vấn đề liên quan