2009-02-20 37 views
6

Tôi đang làm việc với một thư viện sử dụng Environment.NewLine vì nó là newline char khi viết một tệp. Tôi cần nó để viết các tập tin định dạng Unix, và như vậy muốn thay đổi newline char.Tôi có thể thay đổi giá trị của Environment.NewLine không?

Tôi có thể thay đổi giá trị của Environment.NewLine không?

Bất kỳ ý tưởng nào khác (ngoài việc chuyển đổi tạo bài đăng tệp)?

+0

Tại sao bạn không thể tự viết mã bằng char mới nếu đó là những gì bạn muốn? – ryeguy

+0

Đó không phải là thư viện của tôi – TheSoftwareJedi

Trả lời

10

Tôi có thể thay đổi giá trị của Environment.NewLine không?

Không. Nếu bạn biết nền tảng nào cần viết, hãy tạo các lớp cho từng nền tảng này và để chúng có triển khai riêng. Trong trường hợp đơn giản nhất, điều này sẽ trông giống như sau:

public abstract class Platform { public abstract string Newline { get; } } 

public sealed class Unix : Platform { 
    public override string Newline { get { return "\n"; } } 
} 

v.v ..., và sau đó chỉ sử dụng một thể hiện của lớp thích hợp.

+0

Đó là những gì tôi đã tìm. Tôi sẽ tạo một tệp chuyển đổi bài đăng vì nó không phải là thư viện của tôi để thay đổi. Cảm ơn! – TheSoftwareJedi

2

Theo MSDN lớp Môi trường được niêm phong vì vậy bạn sẽ không thể kế thừa từ đó để thay đổi giá trị. Theo tôi biết đó là cách duy nhất bạn có thể làm được. Ngoài ra, bạn có thể thử và tạo một lớp học mở rộng lớp Môi trường. Tôi đã không bao giờ cố gắng sau này để không chắc chắn nếu nó sẽ làm việc.

+0

Thuộc tính Newline là tĩnh ... Bạn có thể mở rộng tất cả những gì bạn muốn. – Kugel

0

Đặc tính môi trường.NewLine không đổi, do đó không có thay đổi. Điều tốt nhất tôi có thể khuyên bạn nên thay đổi ở khắp mọi nơi nơi mà điều này được sử dụng, liên tục của riêng bạn.

0

Thư viện của bên thứ ba có ghi vào Luồng hoặc bạn chuyển tên tệp không?

Trong trường hợp cũ, bạn có thể vượt qua MemoryStream và sau đó thực hiện thay thế trên dòng mới để có được những thứ bạn muốn. Sau này, nó sẽ ghi vào một tệp tạm thời, sau đó truyền trực tiếp đến tệp thực (trong khi thay thế các kết thúc dòng).

1

Environment.Newline đang trả lại ký tự dòng mới của môi trường thời gian chạy lưu trữ thời gian chạy .Net. Bạn không nên sử dụng điều này để chuyển đổi dòng mới sang ký tự dòng mới của nền tảng khác.

Tôi khuyên bạn nên triển khai lớp học của riêng bạn cho chuyển đổi.

0

Xin Chúa ban phước cho bạn không thể ... bạn hoàn toàn thay đổi toàn bộ ý nghĩa của không gian tên System.Environment.

Những gì bạn muốn làm là viết một cái gì đó cho một hệ điều hành cụ thể (bất kể bạn đang chạy ứng dụng nào trong môi trường), vì vậy Environment. không phải là những gì bạn nên sử dụng để bắt đầu.

-2

Chúng tôi đã gặp sự cố này khi chúng tôi phải thay đổi giá trị của NewLine thành <br /> cho đầu ra web.

Nó đòi hỏi phải tạo một tài sản khác để sử dụng trong lớp học của chúng tôi. Có thực sự không có cách nào xung quanh nó.

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