Concept Flow - Using statement with file streams
Start
Open file stream
Execute code block
Dispose file stream automatically
End
The using statement opens a file stream, runs code inside its block, then automatically closes the stream when done.
using (var fs = new FileStream("test.txt", FileMode.OpenOrCreate)) { byte[] data = new byte[] {1, 2, 3}; fs.Write(data, 0, data.Length); }
| Step | Action | FileStream State | Output/Effect |
|---|---|---|---|
| 1 | Enter using block, open file stream 'test.txt' | Open | File 'test.txt' ready for writing |
| 2 | Create byte array data = {1,2,3} | Open | Data prepared in memory |
| 3 | Write data to file stream | Open | Bytes 1,2,3 written to file |
| 4 | Exit using block | Disposed | File stream closed automatically |
| 5 | End of program | Disposed | File safely closed, no resource leak |
| Variable | Start | After Step 2 | After Step 3 | Final |
|---|---|---|---|---|
| fs | null | Open file stream | Open file stream with data written | Disposed (closed) |
| data | null | byte[] {1,2,3} | byte[] {1,2,3} | byte[] {1,2,3} |
using statement syntax:
using (var resource = new Resource()) {
// use resource
}
Behavior:
- Opens resource
- Runs code block
- Automatically calls Dispose() to close resource
Key rule: Always use using with file streams to avoid resource leaks.