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);
}
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQ7CgpuYW1lc3BhY2UgQ29uc29sZUFwcGxpY2F0aW9uMQp7CiAgICBwdWJsaWMgY2xhc3MgRGlza0lzTm90RW5vdWdoRnJlZVNwYWNlIDogSU9FeGNlcHRpb24KICAgIHsKICAgICAgICBwdWJsaWMgRGlza0lzTm90RW5vdWdoRnJlZVNwYWNlKHN0cmluZyBtc2cpCiAgICAgICAgICAgIDogYmFzZShtc2cpCiAgICAgICAgewoKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGNsYXNzIEZpbGVTdHJlYW1FeCA6IEZpbGVTdHJlYW0KICAgIHsKICAgICAgICAKCiAgICAgICAgcHVibGljIEZpbGVTdHJlYW1FeChzdHJpbmcgcGF0aCwgRmlsZU1vZGUgbW9kZSwgRmlsZUFjY2VzcyBhY2Nlc3MpIDogYmFzZShwYXRoLCBtb2RlLGFjY2VzcykKICAgICAgICB7CgogICAgICAgIH0KCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgV3JpdGVCeXRlKGJ5dGUgdmFsdWUpCiAgICAgICAgewogICAgICAgICAgICAvLyDjg4njg6njgqTjg5blkI3lj5blvpcKICAgICAgICAgICAgRHJpdmVJbmZvIGRyaXZlaW5mbyA9IG5ldyBEcml2ZUluZm8oUGF0aC5HZXRQYXRoUm9vdCh0aGlzLk5hbWUpKTsKCiAgICAgICAgICAgIGlmIChkcml2ZWluZm8uQXZhaWxhYmxlRnJlZVNwYWNlIDwgMSkKICAgICAgICAgICAgICAgIHRocm93IG5ldyBEaXNrSXNOb3RFbm91Z2hGcmVlU3BhY2UoIkhEROOBq+epuuOBjeOBjOOBguOCiuOBvuOBm+OCkyIpOwoKICAgICAgICAgICAgYmFzZS5Xcml0ZUJ5dGUodmFsdWUpOwogICAgICAgICAgICAvLyDmrovjgooza2LjgaHjgofjgaPjgY3jgZfjgadJT0V4Y2VwdGlvbgogICAgICAgIH0KICAgIH0KCiAgICBjbGFzcyBQcm9ncmFtCiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgdXNpbmcgKHZhciBmczIgPSBuZXcgRmlsZVN0cmVhbShAIlI6XHRlc3QudGVtcCIsIEZpbGVNb2RlLkNyZWF0ZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZzMi5TZXRMZW5ndGgoOTI3NTE3OTY4Nik7CgoKICAgICAgICAgICAgICAgIEZpbGVTdHJlYW1FeCBmcyA9IG5ldyBGaWxlU3RyZWFtRXgoQCJSOlx0ZXN0LmJ5dGUiLCBGaWxlTW9kZS5BcHBlbmQsIEZpbGVBY2Nlc3MuV3JpdGUpOwoKICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBmcy5Xcml0ZUJ5dGUoNjQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0KfQo=
Unhandled Exception:
System.UnauthorizedAccessException: Access to the path "/home/ncWQ9p/R:\test.temp" is denied.
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0
at System.IO.FileStream..ctor (System.String path, FileMode mode) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode)
at ConsoleApplication1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.UnauthorizedAccessException: Access to the path "/home/ncWQ9p/R:\test.temp" is denied.
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0
at System.IO.FileStream..ctor (System.String path, FileMode mode) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode)
at ConsoleApplication1.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0