>백엔드 개발 >C++ >덮어쓰지 않고 C#에서 CSV 파일에 행 단위로 데이터를 쓰는 방법은 무엇입니까?

덮어쓰지 않고 C#에서 CSV 파일에 행 단위로 데이터를 쓰는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-23 03:07:10729검색

How to Write Data Row by Row to a CSV File in C# Without Overwriting?

덮어쓰지 않고 C#에서 CSV 파일에 데이터 추가

이 문서에서는 기존 데이터를 덮어쓰지 않고 C#에서 CSV 파일에 데이터를 한 행씩 추가하는 일반적인 과제를 다룹니다. File.WriteAllText()을 사용한 원래 방법에서는 데이터가 손실되었습니다. 이 향상된 접근 방식은 보다 효율적이고 강력한 기술을 사용합니다.

File.WriteAllText()

의 문제

File.WriteAllText()을 사용하여 각 행을 직접 쓰면 파일을 반복적으로 덮어쓰고 마지막으로 쓴 행만 남습니다.

해결책: 효율성을 위해 StringBuilder 사용

가장 효율적인 솔루션은 StringBuilder을 사용하여 파일에 쓰기 전에 모든 행을 메모리에 누적하는 것입니다. 이는 디스크 I/O 작업을 최소화하여 특히 많은 수의 행을 처리할 때 성능을 향상시킵니다.

개선된 기능은 다음과 같습니다.

<code class="language-csharp">var csv = new StringBuilder();

// Iterate through data rows
foreach (var rowData in data)
{
    // Format each row (adjust as needed for your data structure)
    var row = $"{rowData[0]},{rowData[1]}"; 
    csv.AppendLine(row);
}

File.WriteAllText(filePath, csv.ToString()); </code>

이 코드:

  1. CSV 데이터를 보관할 StringBuilder을 생성합니다.
  2. rowData 요소를 반복합니다.
  3. 문자열 보간($"...")을 사용하여 각 행의 서식을 지정합니다. 특정 데이터 구조에 맞게 이를 조정하세요.
  4. StringBuilder을 사용하여 서식이 지정된 행을 AppendLine()에 추가합니다.
  5. 마지막으로 File.WriteAllText()을 사용하여 전체 CSV 문자열을 파일에 씁니다. 이렇게 하면 파일이 덮어쓰여집니다. 추가 방법은 다음 섹션을 참조하세요.

대안: File.AppendAllText()

으로 추가

기존 CSV 파일에 행을 추가하려면 File.AppendAllText():

을 사용하세요.
<code class="language-csharp">// ... (same StringBuilder logic as above) ...

File.AppendAllText(filePath, csv.ToString());</code>

이 방법은 기존 데이터를 유지하면서 파일 끝에 csv.ToString() 콘텐츠를 추가합니다. 이는 일반적으로 CSV에 대한 증분 업데이트에 선호됩니다.

추가 개선

  • 오류 처리: try-catch와 같은 잠재적인 예외를 처리하려면 IOException 블록을 추가하세요.
  • 데이터 유효성 검사: 데이터 유효성을 구현하여 데이터 무결성을 보장하고 잠재적인 형식 문제를 처리합니다.
  • 헤더 행: 필요한 경우 헤더 행을 작성하는 논리를 추가합니다.
  • 더욱 강력한 행 형식 지정: 복잡한 데이터 유형이나 필드 내 쉼표가 있을 수 있는 경우 더 강력한 처리를 위해 CSV 라이브러리를 사용하는 것이 좋습니다. 이러한 라이브러리는 종종 이스케이프 및 인용 메커니즘을 제공합니다.

이 향상된 접근 방식은 C#에서 CSV 파일 쓰기를 관리하는 보다 효율적이고 안정적인 방법을 제공합니다. 특정 데이터 구조에 맞게 행 형식을 조정하는 것을 잊지 마세요.

위 내용은 덮어쓰지 않고 C#에서 CSV 파일에 행 단위로 데이터를 쓰는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.