텍스트 파일 내 문자열 삽입은 아래의 방법으로 첫 행 또는 마지막 행에 가능하지만,
string path = {텍스트파일 경로};
string text = {입력 데이터};
//기존 파일의 마지막 행에 추가
File.AppendAllText(path, text + Environment.NewLine);
//기존 파일 내 문자열 읽어오면 첫 행 또는 마지막 행에 추가 가능
string data = File.ReadAllText(path);
File.WriteAllText(path, data + text); //마지막 행 추가
File.WriteAllText(path, text + data); //첫 행 추가
텍스트 파일의 원하는 위치에 문자열을 삽입할 수는 없을까?
결론 : '할 수 있다' 이다😽
텍스트 파일을 리스트 형식으로 변경하여 원하는 위치에 문자열을 삽입하는 것이다.
//using System;
//using System.IO;
//using System.Collections.Generic;
//using System.Text;
//텍스트 파일은 5개 항목이 tap으로 구분되어있는 행 데이터로 구성
//Mapping한 행에 6번째 항목 fileName을 삽입하는 방법
bool res = false;
string path = {텍스트파일 경로};
string fileName = {추가 데이터};
string data = {데이터 추가를 위한 Mapping 데이터};
string[] lines = File.ReadAllLines(path);
int index = -1; //Mapping한 행의 index
string processedData = ""; //삽입할 행 데이터
for(int i=0; i<lines.Length; i++) {
if(lines[i].Contains(data)) {
index = i;
//파일명 기입력 상태인 경우, 건너뛰기
if(lines[i].Split("\t").Count() == 6) {
continue;
} else {
string mainTitle = lines[i].Split("\t")[0];
string title = lines[i].Split("\t")[1];
string dept = lines[i].Split("\t")[2];
string subject = lines[i].Split("\t")[3];
string content = lines[i].Split("\t")[4];
string text = mainTitle + "\t" + title + "\t" + dept + "\t" + subject + "\t" + content;
//6번째 항목 추가하여 행 데이터 내용 변경
processedData = lines[i].Replace(text, text + "\t" + fileName);
res = true;
break;
}
}
}
//텍스트 파일 내 Insert를 위해 텍스트 파일을 리스트 형태로 변환
If(processedData != "") {
List<string> list = new List<string>();
list.AddRange(lines); //리스트에 배열요소 추가
list.Insert(index+1, processedData); //Mapping한 행의 다음 행에 추가
list.RemoveAt(index); //Mapping한 행 삭제
File.WriteAllLines(path, list.ToArray()); //리스트를 배열로 변환하여 입력
}
return res;
'개발노트 > C#' 카테고리의 다른 글
[C#] 파일명과 파일 생성일 정보를 활용하여 파일경로 찾기 (0) | 2024.03.25 |
---|---|
[C#] cmd 명령어 실행결과 추출 (0) | 2024.03.25 |
[C#] 오늘은 몇 주차 일까? - 주차 구하기 (0) | 2024.03.22 |
[C#] 네이버 API를 활용하여 뉴스기사 웹크롤링 - HtmlAgilityPack 라이브러리 (0) | 2024.03.22 |
[C#] 폴더 내 동일한 파일명 존재할 경우, 파일명 순번처리 (0) | 2024.03.19 |