I/O 是 Input/Output(输入/输出)的缩写,指的是计算机系统与外部设备之间交换数据的过程。是计算机程序与用户、其他程序或存储设备(如硬盘、网络、显示器等IO设备)进行交互的基础。对于一个系统或者计算机来说,I/O就是提供数据来源和输出数据的部分。
1.输入(Input)
• 定义:输入是指将数据从外部源传输到计算机系统的过程。
常见输入设备:
• 键盘:用户通过按键输入数据。
• 鼠标:用户通过点击和移动鼠标来输入数据。
• 扫描仪:将纸质文档转换为数字图像。
• 摄像头:捕获视频或图像。
• 麦克风:录制音频。
• 传感器:收集环境数据(如温度、湿度等)。
示例:
• 用户在命令行中输入命令。
• 从文件读取数据。
• 从网络接收数据包。
2.输出(Output)
• 定义:输出是指将数据从计算机系统传输到外部设备的过程。
常见输出设备:
• 显示器:显示文本、图像和视频。
• 打印机:将数字文档打印成纸质形式。
• 扬声器:播放音频。
• 投影仪:将图像投射到大屏幕上。
• 网络接口:发送数据到其他计算机或服务器。
示例:
• 在控制台输出文本。
• 将数据写入文件。
• 通过网络发送数据包。
3. I/O 操作的重要性
• 用户交互:允许用户与应用程序进行交互,提高用户体验。
• 数据处理:使程序能够读取和写入数据,进行计算和分析。
• 持久化:将数据保存到存储设备,以便后续使用。
• 通信:在网络环境中,I/O 操作用于与其他系统或服务进行通信。
4. I/O 操作的类型
• 同步 I/O:程序在执行 I/O 操作时会被阻塞,直到操作完成。
• 异步 I/O:程序在执行 I/O 操作时不被阻塞,可以继续执行其他任务,直到 I/O 操作完成时通过回调或事件通知程序。
• 缓冲 I/O:使用缓冲区来减少对底层硬件的频繁访问,提高效率。
• 非缓冲 I/O:直接与硬件交互,不使用缓冲区。
5. I/O 操作案例说明
从控制台读取输入
Console.WriteLine("请输入您的姓名:");
string name = Console.ReadLine();
Console.WriteLine($"您好, {name}!");
向控制台输出文本
Console.WriteLine("Hello, World!");
从文件读取数据
using (StreamReader reader = new StreamReader("example.txt"))
{
string content = reader.ReadToEnd();
Console.WriteLine(content);
}
向文件写入数据
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("这是一个示例文本。");
}
通过网络发送数据
using System.Net.Sockets;
TcpClient client = new TcpClient("example.com", 80);
NetworkStream stream = client.GetStream();
byte[] data = System.Text.Encoding.ASCII.GetBytes("GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n");
stream.Write(data, 0, data.Length);
data = new byte[256];
int bytes = stream.Read(data, 0, data.Length);
string response = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine(response);
client.Close();
通过这些示例,可以看到 I/O 操作在不同场景下的应用,包括用户交互、文件操作和网络通信。