MCPcopy Create free account
hub / github.com/csyonghe/Spire / Init

Method Init

Source/CoreLib/Stream.cpp:20–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18 Init(fileName, fileMode, access, share);
19 }
20 void FileStream::Init(const CoreLib::Basic::String & fileName, FileMode fileMode, FileAccess access, FileShare share)
21 {
22 const wchar_t * mode = L"rt";
23 const char* modeMBCS = "rt";
24 switch (fileMode)
25 {
26 case CoreLib::IO::FileMode::Create:
27 if (access == FileAccess::Read)
28 throw ArgumentException("Read-only access is incompatible with Create mode.");
29 else if (access == FileAccess::ReadWrite)
30 {
31 mode = L"w+b";
32 modeMBCS = "w+b";
33 this->fileAccess = FileAccess::ReadWrite;
34 }
35 else
36 {
37 mode = L"wb";
38 modeMBCS = "wb";
39 this->fileAccess = FileAccess::Write;
40 }
41 break;
42 case CoreLib::IO::FileMode::Open:
43 if (access == FileAccess::Read)
44 {
45 mode = L"rb";
46 modeMBCS = "rb";
47 this->fileAccess = FileAccess::Read;
48 }
49 else if (access == FileAccess::ReadWrite)
50 {
51 mode = L"r+b";
52 modeMBCS = "r+b";
53 this->fileAccess = FileAccess::ReadWrite;
54 }
55 else
56 {
57 mode = L"wb";
58 modeMBCS = "wb";
59 this->fileAccess = FileAccess::Write;
60 }
61 break;
62 case CoreLib::IO::FileMode::CreateNew:
63 if (File::Exists(fileName))
64 {
65 throw IOException("Failed opening '" + fileName + "', file already exists.");
66 }
67 if (access == FileAccess::Read)
68 throw ArgumentException("Read-only access is incompatible with Create mode.");
69 else if (access == FileAccess::ReadWrite)
70 {
71 mode = L"w+b";
72 this->fileAccess = FileAccess::ReadWrite;
73 }
74 else
75 {
76 mode = L"wb";
77 this->fileAccess = FileAccess::Write;

Callers

nothing calls this directly

Calls 4

ArgumentExceptionClass · 0.85
IOExceptionClass · 0.85
ToWStringMethod · 0.80
BufferMethod · 0.45

Tested by

no test coverage detected