2012-04-04 30 views
5

Tôi đang làm việc với Java trong một môi trường đa nền tảng (Windows + Linux). Dù các tập tin văn bản chúng tôi sản xuất, tuy nhiên, nên sử dụng LF như trình tự EOL của chúng.Đặt dòng mặc định kết thúc bằng Java

Có cách nào tôi có thể buộc Java sử dụng chuỗi EOL này bất kể trên nền tảng mà tôi đang chạy chương trình không? Tôi không muốn phải thay đổi toàn bộ chương trình, tức là tất cả các cuộc gọi đến System.out.println và tương tự nên được giữ nguyên, chỉ có * ln ở cuối hàm nên luôn xuất ra một "0x0A" và không bao giờ " 0x0D 0x0A ".

tôi có thể nghĩ đến hai cách khác nhau để làm điều đó, nhưng tôi không biết nếu một trong hai thể:

  1. override chuỗi EOL mặc định nền tảng phụ thuộc vào
  2. làm Java tin tôi chạy Linux ngay cả khi tôi chạy chương trình của mình trên dòng lệnh DOS

Có thể thực hiện điều này không? Hoặc cái gì khác có lẽ?

+1

http://stackoverflow.com/questions/6128174/how-do-i-force-windows-line-endings-in-java-app – kevingallagher

Trả lời

2

Bạn có thể thử thiết lập thuộc tính hệ thống tương ứng như System.setProperty("line.separator", "something you need"); (Nó cũng có thể đạt được throug thông số dòng lệnh để JVM)

Hoặc, có thể, bạn có thể sử dụng print insetad của println và in ký tự dòng phá ("\r", "\ n" hoặc kết hợp của chúng) nơi bạn cần.

1

Hãy xem thisthis. Nếu bạn đặt chúng lại với nhau, bạn sẽ thấy rằng System.setProperty("line.separator", "\n"); có thể giải quyết vấn đề của bạn.

Chưa thử nghiệm, đó là lý do tôi thêm liên kết để bạn có thể tự mình kiểm tra.

+2

Điều này không hữu ích. Bạn thay đổi thuộc tính nhưng không thay đổi hành vi. Nó chỉ là dos không phản ứng về thay đổi tài sản. Đã xác minh thử nghiệm. Tương tự với các thuộc tính hệ thống khác, như java.class.path. Dòng lệnh là lựa chọn duy nhất của bạn (hoặc một số sửa đổi thời gian chạy mã). – Espinosa