C# 文件 IO 实操练习题 5道

以下练习1-5 , 在主函数 调用即可

FileTest?.Run() , ?为对应的类名

目录

[练习一:基础创建文件夹 + 判断是否存在](#练习一:基础创建文件夹 + 判断是否存在)

练习二:文本文件整体读写

[练习三:逐行写入 + 逐行读取](#练习三:逐行写入 + 逐行读取)

练习四:文件复制与删除

练习五:异常防护版文件读取

[控制台: 输出内容](#控制台: 输出内容)


练习一:基础创建文件夹 + 判断是否存在

需求

定义文件夹名 MyFileTest

判断该文件夹是否存在

不存在则自动创建,存在则控制台打印提示

cs 复制代码
//练习一 创建文件夹 + 判断是否存在
class FileTest1 
{
    public FileTest1()
    {
        
    }
    public static void Run()
    {
        // 文件夹名称
        string folderName = "MyFileTest";

        // 判断是否存在
        bool exists = Directory.Exists(folderName);
        if(!exists)
        {
            Directory.CreateDirectory(folderName);
            Console.WriteLine("文件夹不存在,已成功创建:" + folderName);
        } else
        {
            Console.WriteLine("文件夹已存在:" + folderName);
        }
    }
}

练习二:文本文件整体读写

需求

在上面创建的文件夹内,新建 info.txt

写入文本内容:C#文件读写练习

读取文件全部内容,并打印到控制台

cs 复制代码
// 练习二 创建文件, 写入, 读取
class FileTest2
{
    public static void Run()
    {
        // 1. 拼接正确路径:MyFileTest\info.txt
        string folder = "MyFileTest";
        string filePath = Path.Combine(folder, "info.txt");

        // 2. 写入文件(using 自动关闭,最安全)
        // StreamWriter 会自动创建文件
        using (StreamWriter sw = new StreamWriter(filePath))
        {
            sw.WriteLine("C#文件读写练习");
        }

        using (StreamReader sr = new StreamReader(filePath))
        {
            string content = sr.ReadToEnd(); //读取全部内容
            Console.WriteLine("读取到的内容:"+ content);
        }
          

    }
}

练习三:逐行写入 + 逐行读取

需求

新建 lineData.txt

分行写入三行内容:

plaintext

第一行数据

第二行数据

第三行数据

循环逐行读取每行内容,依次控制台输出

cs 复制代码
// 练习三 逐行写入+逐行读取
class FileTest3
{
    public static void Run()
    {   
        // 拼合路径
        string folder = "MyFileTest";
        string filePath = Path.Combine(folder, "lineData.txt");

        // 写入文件内容
        using (StreamWriter sw = new StreamWriter(filePath))
        {
            sw.WriteLine("第一行数据");
            sw.WriteLine("第二行数据");
            sw.WriteLine("第三行数据");
        }

        // 读取文件数据,逐行
        using (StreamReader sr = new StreamReader(filePath))
        {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

练习四:文件复制与删除

需求

把练习二的info.txt复制一份,命名为info_copy.txt

判断复制后的文件是否存在

最后删除副本文件info_copy.txt

cs 复制代码
// 练习四 文件赋值与删除
class FileTest4
{
    public static void Run()
    {
        string folder = "MyFileTest";
        string sourceFile = Path.Combine(folder,"info.txt");  // 源文件
        string copyFile = Path.Combine(folder,"info_copy.txt"); // 副本

        // 1. 复制文件(true = 如果已存在就覆盖,不报错)
        File.Copy(sourceFile, copyFile, true);
        Console.WriteLine("文件复制成功!");

        // 2. 判断复制后的文件是否存在
        if (File.Exists(copyFile))
        {
            Console.WriteLine($"验证成功:文件已存在 → {copyFile}");
        }

        File.Delete(copyFile);
        Console.WriteLine($"文件已删除,路径为{copyFile}");
    }
}

练习五:异常防护版文件读取

需求

读取info.txt内容

用 try-catch 捕获文件不存在、读写异常

出错时控制台输出错误提示,正常则打印文本内容

cs 复制代码
 //练习五:异常防护版文件读取
 class FileTest5
 {
     public static void Run()
     {
         try
         {
             string folder = "MyFileTest";
             string fileName = Path.Combine(folder, "info.txt");  // 源文件

             // 读取文件
             using (StreamReader sr = new StreamReader(fileName))
             {
                 string line;
                 while ((line = sr.ReadLine()) != null)
                 {
                     Console.WriteLine($"文件内容为{line}");
                 }

             }
         }
         catch (Exception ex)
         {
             // 输出具体错误,而不是只说"报错了"
             Console.WriteLine("读取文件失败,原因:" + ex.Message);
         }

     }
 }

控制台: 输出内容

相关推荐
D3bugRealm9 分钟前
cryptography:Python 开发者的加密标准库
开发语言·python·其他
Rain50917 分钟前
2.1 Nest.js 项目初始化与模块化架构
开发语言·前端·javascript·后端·架构·数据分析·node.js
小熊美家熊猫系统36 分钟前
电子合同技术实现与合规实践
java·开发语言·分布式
ytttr87338 分钟前
C# 定时数据库备份工具
开发语言·数据库·c#
skywalk81631 小时前
言知项目后续方向建议
开发语言·学习·编程
拉勾科研工作室2 小时前
区块链工程毕业论文题目【249个】
开发语言·javascript
雪豹阿伟2 小时前
21.Winfrom —— 定时器、日期选择器、进度条、表格、DataTable
c#·上位机·winfrom
z落落2 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
ptc学习者2 小时前
python 中描述符@property property 大概的样子
开发语言·python
zmzb01032 小时前
Python课后习题训练记录Day129
开发语言·python