2009-02-20 10 views
6

Environment.NewLine을 파일을 작성할 때 개행 문자로 사용하는 라이브러리로 작업하고 있습니다. Unix 형식의 파일을 작성해야하고 개행 문자를 변경하려고합니다.Environment.NewLine의 값을 변경할 수 있습니까?

Environment.NewLine의 값을 변경할 수 있습니까?

다른 모든 아이디어 (파일 게시 생성을 변환하는 것을 제외하고)?

+0

원하는 경우 개행 문자를 수동으로 코딩 할 수없는 이유는 무엇입니까? – ryeguy

+0

그건 내 도서관이 아니야 – TheSoftwareJedi

답변

10

Environment.NewLine의 값을 변경할 수 있습니까?

아니요. 작성할 플랫폼을 알고있는 경우, 각 플랫폼에 대한 클래스를 만들고 자체적으로 구현할 수 있습니다. 가장 단순한 경우 다음과 같이 표시됩니다.

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

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

등. 그런 다음 적절한 클래스의 인스턴스 만 사용하면됩니다.

+0

그건 내가 생각한거야. 내 라이브러리가 변경되지 않기 때문에 전환 게시 파일 만들기를 수행 할 것입니다. 감사! – TheSoftwareJedi

2

MSDN에 따르면 Environment 클래스는 봉인되어 있으므로 값을 변경하기 위해 상속받을 수 없습니다. 내 지식은 당신이 할 수 있었던 유일한 길입니다. 또는 Environment 클래스를 확장하는 부분 클래스를 만들 수도 있습니다. 후자를 시도한 적이 없으므로 제대로 작동하는지 확신 할 수 없습니다.

+0

NewLine 속성은 정적입니다. 원하는만큼 확장 할 수 있습니다. – Kugel

0

Environment.NewLine 속성 상수이므로 변경할 필요가 없습니다. 내가 추천 할 수있는 가장 좋은 방법은 이것이 사용되는 모든 곳을 자신의 상수로 바꾸는 것이다.

0

타사 라이브러리가 스트림에 쓰거나 파일 이름을 전달합니까?

전자의 경우 MemoryStream을 전달한 다음 개행을 바꾸어 원하는 것을 얻을 수 있습니다. 후자에서는 임시 파일에 기록한 다음 실제 파일로 스트리밍 (라인 끝을 바꾸면서)합니다.

1

환경 .Newline은 .Net 런타임을 호스팅하는 런타임 환경의 개행 문자를 반환합니다. 개행 문자를 다른 플랫폼의 개행 문자로 변환 할 때는 사용하지 말아야합니다.

변환을 위해 고유 한 클래스를 구현하는 것이 좋습니다.

0

신의 축복을 ... System.Environment 네임 스페이스의 모든 의미를 완전히 바꿀 수는 없습니다.

당신이하고 싶은 일은 특정 OS (어떤 응용 프로그램을 실행중인 환경)에 상관없이 환경을 작성하는 것입니다. 당신이 처음에 사용해야하는 것이 아닙니다.

-2

웹 출력을 위해 NewLine의 값을 <br />으로 변경해야했던이 문제가있었습니다.

우리 수업에 사용할 다른 속성을 만들어야했습니다. 주변에는 정말 방법이 없습니다.

관련 문제