using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class DiskIsNotEnoughFreeSpace : IOException { public DiskIsNotEnoughFreeSpace(string msg) : base(msg) { } } public class FileStreamEx : FileStream { public FileStreamEx(string path, FileMode mode, FileAccess access) : base(path, mode,access) { } public override void WriteByte(byte value) { // ドライブ名取得 DriveInfo driveinfo = new DriveInfo(Path.GetPathRoot(this.Name)); if (driveinfo.AvailableFreeSpace < 1) throw new DiskIsNotEnoughFreeSpace("HDDに空きがありません"); base.WriteByte(value); // 残り3kbちょっきしでIOException } } class Program { static void Main(string[] args) { using (var fs2 = new FileStream(@"R:\test.temp", FileMode.Create)) { fs2.SetLength(9275179686); FileStreamEx fs = new FileStreamEx(@"R:\test.byte", FileMode.Append, FileAccess.Write); while (true) { fs.WriteByte(64); } } } } }