C#에서 파일을 잘라내어(truncate) 특정 길이로 줄이거나 늘리려면 FileStream.SetLength 메서드를 사용하면 됩니다. 이 메서드는 스트림의 길이를 지정한 값으로 설정하여 파일 크기를 손쉽게 조절할 수 있게 해줍니다.
SetLength 메서드 구문
public override void SetLength(long value);
여기서 매개변수 value는 64비트 정수(int64)로, 설정하고자 하는 스트림의 새로운 길이(바이트 단위)를 의미합니다.
지정한 값이 현재 길이보다 작은 경우
설정한 값이 스트림의 현재 길이보다 작으면, 스트림은 해당 길이만큼 잘립니다(truncate). 만약 현재 위치가 새로운 길이보다 크다면, 현재 위치는 스트림의 마지막 바이트로 자동 이동됩니다.
지정한 값이 현재 길이보다 큰 경우
반대로 설정한 값이 현재 길이보다 크면, 스트림은 확장되며 현재 위치는 그대로 유지됩니다. 다만 이때 기존 길이와 새로운 길이 사이에 추가된 내용은 정의되지 않은(undefined) 상태가 되므로 주의해야 합니다.
실제 코드 예제
아래는 FileStream.SetLength 메서드를 사용하여 파일을 자르는 간단한 코드 예제입니다.
public void Export(string path) {
FileStream oStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);
oStream.SetLength(Length);
}사용 시 주의사항
파일을 열 때는 반드시 쓰기 권한(FileAccess.ReadWrite 또는 FileAccess.Write)이 포함되어야 SetLength 메서드를 호출할 수 있습니다. 읽기 전용으로 연 스트림에서는 NotSupportedException이 발생할 수 있으니 참고하세요.