존재하는 파일에 데이터 쓰기

프로젝트에서 서버를 통해 파일을 전송하는 문제가 발생했습니다.
구체적인 과정: 1. 현재 파일 크기에 따라 하드디스크에 충분한 공간이 있는지 판단한다.
2, 파일 크기에 따라 빈 파일을 만들어서 이 공간을 차지한다.
3. 파일을 받기 시작하여 방금 만든 파일에 저장하고 빈 파일을 점차적으로 파일 데이터로 대체한다.
솔루션:
1, 하드 드라이브의 남은 공간 크기 판단:
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
        public static extern bool GetDiskFreeSpaceEx(
                string lpDirectoryName,
                out UInt64 lpFreeBytesAvailable,
                out UInt64 lpTotalNumberOfBytes,
                out UInt64 lpTotalNumberOfFreeBytes);
 ulong freeBytesAvailable = 0;
            ulong totalNumberOfBytes = 0;
            ulong totalNumberOfFreeBytes = 0;

            GetDiskFreeSpaceEx(
               "D:\\",
               out freeBytesAvailable,
               out totalNumberOfBytes,
               out totalNumberOfFreeBytes);

2, 빈 파일 만들기
FileStream fs = new FileStream(@"D:\AAAA\" + fileName, FileMode.Create, FileAccess.Write);
            byte[] buffer = new byte[fileLength];
            fs.Write(buffer, 0, fileLength);
            fs.Close();

3. 파일 수신을 시작하여 방금 만든 파일에 저장하고 빈 파일을 점차적으로 파일 데이터로 대체한다
 FileStream fs = new FileStream(@"D:\AAAA\" + fileName, FileMode.OpenOrCreate, FileAccess.Write);
 fs.Position = 0;
fs.Seek(0, SeekOrigin.Current);
fs.Write(realBody, 0, fileLength);

4, FileStream 종료
fs.Close();

좋은 웹페이지 즐겨찾기