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);
         }

     }
 }

控制台: 输出内容

相关推荐
孫治AllenSun1 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
c238562 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
moonsims3 小时前
星闪在跨域无人化系统作用
开发语言·php
Iruoyaoxh4 小时前
栈和队列~
java·开发语言
Hrain-AI4 小时前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
wdfk_prog4 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort1234 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
slandarer5 小时前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图
Xin_ye100865 小时前
第三章:内存泄漏的常见“案发现场”
c#·wpf
mct1235 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++