C# 文件操作

news2025/1/25 8:59:50

一 File\FileInfo类

在.NETFramework提供的文件操作类基本上都位于System.IO的命名空间下。操作硬盘文件常用的有两个类File\FileInfo.

File类主要是通过静态方法实现的,FileInfo类是通过实例方法。

File类核心成员:

 FileInfo类的实例成员提供了与File相似的功能,方法名称基本一致,大多数情况下,FileInfo和File类可以互换使用,但是由于File类所提供的方法都是静态方法,所以如果只想执行一个操作,使用File类的效率相对更高一点。

using System;
using System.IO;

namespace 文件操作01
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream fs = null;
            StreamWriter sw = null;
            string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + "123.txt";
            if (!File.Exists(path))
            {
                fs = File.Create(path);
                Console.WriteLine("新建一个文件:{0}", path);
            }
            else
            {
                fs = File.Open(path, FileMode.Open);
                Console.WriteLine("文件已经存在,直接打开", path);
            }

            sw = new StreamWriter(fs);
            sw.WriteLine("测试文本");
            Console.WriteLine("向文件写入文本数据");
            sw.Flush();
            sw.Close();
            fs.Close();
            Console.WriteLine("关闭数据流");
            Console.ReadKey();
        }
    }
}

二 Directory/DirectoryInfo类

这两个类中都包含了一组用来创建、移动删除、和枚举所有目录或者子目录的成员。

Directory常用成员:

 DirectoryInfo类所提供的成员与Directory类的相似,在大多数情况下,可以互换使用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Threading.Tasks;

namespace 文件操作02
{
    class Program
    {
        static void Main(string[] args)
        {
            string dirPath = "C:\\存储盘";
            string filePath = string.Format("{0}\\{1}", dirPath, "wuzhTest.txt");
            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
                Console.WriteLine("新建一个目录:{0}", dirPath);
            }
            else
            {
                Console.WriteLine("目录已经存在");
            }

            FileInfo file = new FileInfo(filePath);
            if (!file.Exists)
            {
                file.Create();
                Console.WriteLine("新建一个文件:{0}", filePath);
            }
            else
            {             
                Console.WriteLine("文件{0}已经存在", filePath);
            }
        }
    }
}

三 流(Stream)

流(Stream)可以理解为内存中的字节序列,Stream类是所有流的抽象基类,每个具体的存储实体都可以通过Stream派生类来实现,比如FileStream类。

流涉及到三个基本操作:

1 对流进行读取,

2 对流进行写入

3 对流进行查找

Stream类常用成员如下:

 

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading.Tasks;

namespace 文件操作03
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = "C:\\存储盘\\wuzh04.txt";
            using(FileStream fs = File.Open(filePath, FileMode.OpenOrCreate))
            {
                string msg = " hello SMS";
                StreamWriter sw = new StreamWriter(fs);//创建StreamWriter对象
                Console.WriteLine("开始写入{0}到文件",msg);
                sw.Write(msg);
                StreamReader sr = new StreamReader(fs);//创建StreamReader对象
                Console.WriteLine("写入文件中的数据为:\n{0}", sr.ReadToEnd());
                sw.Close();
                sr.Close();
                Console.Read();
            }
        }
    }
}

读写器

文本读写器:TextReader类,TextWriter类

字符串读写器:StringReader类,StringWriter类

二进制读写器:BinaryReader类,BinaryWriter类

流读写器:StreamReader类,StreamWriter类

四 文件异步操作

以FIleStream为例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis实现分布式锁的7种方案,及正确使用姿势!

redis学习笔记 7种方案前言 日常开发中,秒杀下单、抢红包等等业务场景,都需要用到分布式锁。而Redis非常适合作为分布式锁使用。本文将分七个方案展开,跟大家探讨Redis分布式锁的正确使用方式。如果有不正确的地方,欢迎大家指出…

c盘如何扩展分区?C盘满了这么处理就对了

案例分享:“c盘如何扩展分区?我的电脑C盘前几天都还有50GB,这几天发现越来越小了,电脑也越来越卡顿了,为什么我的C盘突然就满了呢?那么我该怎么解决这个问题?请求大神的帮助!” 在使…

C++内存管理详解

大家好,这里是bang_bang,今天来分享下内存管理的知识。 目录 1.C/C内存分布 2.C内存管理方式 2.1new/delete操作内置类型 2.2new/delete操作自定义类型 3.operator new与operator delete函数 3.1operator new 3.2operator delete 4.new和delete的实现…

【C++进阶之路】初始C++语法(上)

文章目录前言一.命名空间命名冲突命名空间的使用展开命名空间作用域限定符访问作用域命名空间的合并命名空间的嵌套二.输入输出打印流插入运算符输入流提取运算符三.缺省参数全缺省半缺省跨文件缺省函数参数缺省参数的使用格式四.函数重载参数个数不同参数类型不同参数顺序不同…

ubuntu20 qt6.4.3 ustc镜像安装 xdma

文件下载地质 命令 ./qt-unified-linux-x64-4.5.2-online.run --mirror https://mirrors.ustc.edu.cn/qtproject没有镜像就下砸错误hash verification while downloading,this is temporary error,please retry 部分安装器不支持 --mirror cd ~/workspace/dma_ip_drivers/X…

RCIE练习题2之BGP4+配置

R4-R10共7台设备,运行BGP 4+路由协议,其中R4和R5、R6之间为EBGP邻居,其余设备之间为IBGP邻居,将R4 loopback 0的IPv6地址通过重分发方式引入BGP 4+,不得引入多余路由,在R5-R10上均可学习到R4的loopback 0 IPv6地址,同时通过合适配置使得R4上能够学习到R5-R10的loopback …

Excel技能之数据验证,总有一款适合你

用户填写的内容,是未知的,不可靠的。但是,我们要对数据的规范、格式、条件做出限制,既能保证数据的质量,也能统一每个人的行为。最大限度去避免垃圾数据的录入,眼不见心不烦,让心情美美的。 数…

Cont. DB Project ----- MySQL Python Project

Function achieve (Cont.) Item Search 添加一个新函数search_item,用于实现商品搜索的功能。参数:keyword (为了模糊查询) # search items by keywords def search_item(keyword):cursor, db connect_database()sql f"SE…

milovski-V-XXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

目录 前言: 一、勒索病毒milovski-V-XXXXXXXX的危害 二、milovski-V-XXXXXXXX勒索病毒的数据恢复方法 三、milovski-V-XXXXXXXX勒索病毒加密数据恢复案例 四、如何防范勒索病毒攻击 前言: 在当今互联网时代,勒索病毒已成为企业信息安全面…

掌握机器学习中的“瑞士军刀”XGBoost,从入门到实战

文章目录1 XGBoost简介2 XGBoost的算法优势3 安装XGBoost库4 回归模型5 分类模型6 XGBoost调参作为机器学习领域中的“瑞士军刀”,XGBoost在各大数据科学竞赛中屡获佳绩。本篇博客将为大家介绍如何使用Python中的XGBoost库,从入门到实战掌握XGBoost的使用…

iot-Scada免费Scada组态软件系列教程4-二次开发与版本部署

iot-Scada免费Scada组态软件系列教程 系列文章目录 iot-Scada免费Scada组态软件系列教程1-初识iot-Scada iot-Scada免费Scada组态软件系列教程2-架构设计 iot-Scada免费Scada组态软件系列教程3-各模块详细介绍 iot-Scada免费Scada组态软件系列教程4-二次开发与版本部署 前言…

p73 应急响应-WEB 分析 phpjavaweb自动化工具

数据来源 应急响应: 保护阶段(护案发现场,断网防止持续渗透,数据备份恢复),分析阶段(找到漏洞),复现阶段(复现攻击过程),修复阶段&am…

QML控件--DialogButtonBox

文章目录一、控件基本信息二、控件使用三、属性成员四、附加属性成员五、成员函数六、信号一、控件基本信息 Import Statement:import QtQuick.Controls 2.14 Since:Qt 5.8 Inherits:Container 二、控件使用 DialogButtonBox:是…

基于 VITA57.4 标准的单通道 6GSPS 12 位采样 ADC,单通道 6GSPS 16 位采样 DAC 子卡模块

概述 FMC147 是一款单通道 6.4GSPS(或者配置成 2 通道 3.2GSPS)采样率的 12 位 AD 采集、单通道 6GSPS(或配置成 2 通道 3GSPS) 采样率 16 位 DA 输出子卡模块,该板卡为 FMC标准,符合 VITA57.4 规范&#x…

业务项目管理软件使用推荐

使用Zoho Projects的运营项目管理简化任务并最大限度地利用资源,该管理已被全球200,000多家公司选中。 一、带领您的团队取得更好的成果 Zoho Projects的多功能业务项目管理软件可帮助您的团队在所有运营流程中保持一致。监控您的运营团队的工作流程以确保每个项目顺…

IGKBoard(imx6ull)-Linux下TTY串口编程

文章目录一、TTY介绍(1)理解tty(2)tty设备节点二、tty串口应用编程(1)串口基本操作【1】打开串口【1】读写数据【1】关闭串口(2)termios 结构体(配置)&#x…

如何处理后端返回的复杂数据

将接口的复杂数据结构映射成简单的数据结构 假设我们有一个API,返回以下数据: {"id": 1,"name": "Example API","process_params": {"param1": {"name": "Parameter 1","…

企业数字化转型有哪些好处?

从马车到汽车,从写信到智能手机,每一次技术革新所带来的都是生产力大发展,小到个人、家庭,大到企业、国家,都在每一轮技术革新中获得了好处。 可以说,现在的企业数字化转型,就像是企业管理“工具…

从0学习stm32

1.STM32介绍: ST:指的是意法半导体; M:指定微处理器 使用的是ARMCortex-M3 ARM分成三个系列: Cortex-A: 针对多媒体应用(手机) Cortex-R:针对对实时性和性能有一定要求的场景 Cortex-M:针对低功耗高性…

基于html+css的自适应展示4

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…