2009-12-09 3 views
1

"|" 구분 된 파일은 그 안에있는 모든 행을 읽어야하며 "< \ HRM>"이 존재하면 ""(아무것도 표시하지 않습니다. 그리고 "HRM \"이있는 곳에 그것을 대체하십시오; 읽은 것과 같은 순서로 모든 것을 써야합니다.C#에서 텍스트 파일의 항목 바꾸기

저는 원래의 쓰기를 편집하고 새로운 것을 쓰지 않고이 작업을하고 싶습니다. 내가 새로운 파일을 써야한다면 나는해야한다고 생각한다.

답변

2

("이것", "이 변경").

using (StreamReader stream = new StreamReader(File.Open(@"YourFilePath", FileMode.Open))) 
{ 
    string fileText = stream.ReadToEnd(); 

    // Do your replacements 
    fileText = fileText.Replace(@"<\HRM>", string.Empty); 
    fileText = fileText.Replace(@"HRM\", ";"); 

    using (StreamWriter writer = new StreamWriter(File.Open("@YourFilePath", FileMode.Create))) 
    { 
     // You do a create because the new file will have less characters than the old one 
     writer.Write(fileText); 
    } 
} 
+0

어떨까요? 라인 단위로 교체하는 것이 메모리 사용을 훨씬 쉽게합니다. –

+0

당신은 두 가지 가정을하고 있습니다. A) 파일에/n/r이 있습니다. 없을 수도 있습니다. B) ""또는 "HRM \"은 줄을 감싸지 않습니다. 나는 그 파일이 어떻게 보였는지 알지 못했기 때문에, 비록 그것이 느리다하더라도 모든 것을 읽는 것이 가장 좋은 방법 일 것이다. 바이트로만 버퍼를 읽으려고했는데, 내가 "<\HRM>"의 중간에 있었는지 어떻게 알 수 있습니까? –

+0

이것은 잘 작동했기 때문에 여분의 공간에 놓이게되므로 결국 끝납니다. ; . 나는 무엇이든지 될 수있다. | | 이미 파일에 있습니다. –

0

새로운 것을 작성하고 싶습니다. 이 작업을 수행하는 데는 좋은 이유가 있습니다. 그 중 가장 적은 것이 훨씬 더 빠를 것입니다. 그것은 또한 당신의 데이터가 안전의 정도 (전력 손실이 잠재적 인 데이터 손실/손상을 초래하지 않습니다를 제공합니다.

일반적으로 인정 절차의 라인을 따라입니다

  • 열기 새 파일
  • 쓰기 밖으로 새 파일이 더 컴팩트하고, 따라서 밖으로 문자를 제거하고되기 때문에 파일을 다시 작성해야
0

이전 파일의 정상에

  • 이동 - 귀하의 < \ HRM>을 등가 공백으로 대체하지 않으려면 위치 보유를 유지해야합니다.

    하려면 string.replace 문제는 파일이 솔루션 또는 적어도 그것을 천천히 변경 될 수 있습니다 얼마나 큰

  • 관련 문제