C# Winform编程(7)文件处理技术

news2024/11/7 11:30:28

文件处理技术

  • System.IO命名空间
  • File类的常用方法
  • FileInfo类的常用方法
  • 文件夹类Directory的常用方法

System.IO命名空间

System.IO命名空间常用的类

说明
File提供用于创建,复制,删除,移动和打开文件的静态方法,并协助创建FileStream对象
FileInfo提供用于创建,复制,删除,移动和打开文件的实例方法,并且帮助创建FileStream对象。无法继承此类
FileStream公开以文件为主的Stream,即支持同步读写操作,也支持异步读写操作
BinaryReader用特定的编码将基元数据类型读作二进制值
BinaryWriter以二进制形式将基元类型写入流,并支持用特定的编码写入字符串
BufferedStream给另一流上的读写操作添加一个缓冲层。无法继承此类
Directory公开用于创建,移动和枚举目录和子目录的静态方法。无法继承此类
DirectoryInfo公开用于创建,移动和枚举目录和子目录的实例方法。无法继承此类
Path对包含文件或目录路径信息的String实例执行操作。这些操作是以跨平台的方式执行的
StreamReader实现一个TextReader,使其以一种特定的编码从字节流中读取字符
StreamWriter实现一个TextWriter,使其以一种特定的编码向字节流中写入字符
FileSysWatcher侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件

System.IO命名空间常用的枚举

枚举说明
FileMode指定操作系统打开文件的方式
FileShare包含用于控制其他FileStream对象对同一文件可以具有的访问类型的常数
FileAccess定义用于控制对文件的读访问,写访问或读/写访问的常数

File类的常用方法

方法说明
Move将指定文件移到新位置,并提供指定新文件名的选项
Delete删除指定的文件。如果指定的文件不存在,则不引发异常
Copy已重载。将现有文件复制到新文件
CreateText创建或打开一个文件用于写入UTF-8编码的文本
OpenText打开现有UTF-8编码文本文件以进行读取
Open已重载。打开指定路径上的FileStream
private void FileDemo()
{
    string path = @"c:\temp\MyTest.txt";
    if (!File.Exists(path))
    {
        // 创建文件以便写入内容
        using (StreamWriter sw = File.CreateText(path))
        {
            sw.WriteLine("Hello");
            sw.WriteLine("And");
            sw.WriteLine("Welcome");
        }
    }
    // 打开文件,从中读数据
    using (StreamReader sr = File.OpenText(path))
    {
        string s = "";
        while ((s = sr.ReadLine()) != null)
        {
            Console.WriteLine(s);
        }
    }
    
    try
    {
        string path2 = path + "temp";
        // 确认将要复制成的文件是否已经有同名的文件存在
        File.Delete(path2);
        // 复制文件
        File.Copy(path, path2);
        Console.WriteLine("{0} was copied to {1}.",path, path2 );
        // 删除新生成的文件
        File.Delete(path2);
        Console.WriteLine("{0} was successfully deleted.", path2);
    }
    catch (Exception ex) 
    {
        Console.WriteLine("The process failed:{0}", ex.ToString());
    }
}

FileInfo类的常用方法

FileInfo提供创建,复制,删除,移动和打开文件的实例方法,并且帮助创建FileStream对象。

属性说明
Attributes获取或设置当前FileSystemInfo对象的FileAttributes属性(从FileSystemInfo类继承)
CreationTime获取或设置当前FileSystemInfo对象的创建时间(从FileSystemInfo类继承)
Directory获取父目录的实例
DirectoryName获取表示目录的完成整路径的字符串
Exists已重写。获取指示文件是否存在的值
Extension获取表示文件扩展名部分的字符串(从FileSystemInfo类继承)
        private void FileInfoDemo()
        {
            string fileName = "C:\\temp\\autoexec.bat";
            FileInfo fileInfo = new FileInfo(fileName);
            if (fileInfo.Exists)
            {
                return;
            }
            Console.WriteLine("{0} has a directoryName of {1}", fileName, fileInfo.DirectoryName);
        }

File和FileInfo综合示例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace FileProcess
{
    public partial class FormFileDemo : Form
    {
        public FormFileDemo()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string target = @"C:\temp\1.txt";
            if (File.Exists(target))
            {
                File.Delete(target);
            }
            File.CreateText(target);
            MessageBox.Show("文件创建成功!");
        }

        private void button2_Click(object sender, EventArgs e)
        {          
            string someFile = @"C:\temp\F1.txt";
            string target = @"C:\temp\1.txt";

            if (!File.Exists(someFile))
            {
                MessageBox.Show("文件不存在!");
            }
            else
            {
                if (File.Exists(target))
                {
                    File.Delete(target);
                }
                File.Copy(someFile, target);
                MessageBox.Show("文件复制成功!");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string target = @"C:\temp\1.txt";
            if (File.Exists(target))
            {
                File.Delete(target);
                MessageBox.Show("文件删除成功!");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            string somefile = @"C:\temp\1.txt";
            FileInfo  myFile = new FileInfo(somefile);
            if (myFile.Exists)
            {
                MessageBox.Show("文件已经存在");
                label1.Text = "创建时间:" + myFile.CreationTime.ToString();
                label2.Text = "文件夹:" + myFile.Directory.ToString();
                label3.Text = "文件夹名称:" + myFile.DirectoryName.ToString() + ",文件扩展名:" + myFile.Extension.ToString();

            }
            else 
            {
                MessageBox.Show("文件不存在");
            }
        }
    }
}

在这里插入图片描述

文件夹类Directory的常用方法

Directory类公开用于创建,移动和枚举通过目录和子目录的静态方法。无法继承此类。

方法说明
Move蒋文件或目录及其内容移动到新位置
Delete已重载。删除指定的目录
CreateDirectory已重载。创建指定路径中的所有目录
GetCreationTime获取目录的创建日期和时间
GetCurrentDirectory获取引用程序的当前工作目录
GetFiles已重载。返回指定目录中的文件的名称

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

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

相关文章

python triangle库将一组闭合点转化为三角网格时网格过密的问题

输入点的格式: [[x1,y1], [x2,y2], … [xn,yn], ] segments 格式: 指示输入点的连接关系 三角化代码: t2 triangle.triangulate({vertices: path,segments: segments}, peq32.5a0.5)效果: 网格过密,根据文档&…

SystemVerilog Assertions应用指南 Chapter1.38在序列匹配时调用子程序

SVA可以在序列每次成功匹配时调用子程序。同一序列中定义的局部变量可以作为参数传给这些子程序。对于序列的每次匹配,子程序调用的执行与它们在序列定义中的顺序相同。 module sub;logic a, b, clk;initial $vcdpluson();initial begin clk 1b0; a1b0; b1b0; repeat(2) (pos…

代码随想录算法训练营第二十八天 | LeetCode 491. 递增子序列、46. 全排列、47. 全排列 II

代码随想录算法训练营第二十八天 | LeetCode 491. 递增子序列、46. 全排列、47. 全排列 II 文章链接:递增子序列 全排列 全排列II 视频链接:递增子序列 全排列 全排列II 目录 代码随想录算法训练营第二十八天 | LeetCode 4…

使用VGG框架实现从二分类到多分类

一.数据集的准备 与之前的不同,这一次我们不使用开源数据集,而是自己来制作数据集。重点需要解决的问题是对数据进行预处理,如每一个图片的大小均不同,需要进行resize,还需要对每一张图片打标签等操作。 数据集文件 …

根据pid查看jar包(windows)

打开jdk/bin/jvisualvm.exe,根据pid找到jar包的主启动类,jdk14以后不再默认使用,官网下载,也可以使用老版本的查看

虚拟机如何联网【NAT】

查看VMWARE的IP地址 #进入root用户 su -#更改虚拟网卡设置界面 vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改ONBOOT为yes BOOTPROTO为static IPADDR为前面的网段 192.168.211.xx (xx为自己设置的,可以随意设置,前面的为前面查看的IP地址的前…

黑客技术(自学方法)——网络安全

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客&#xff0c…

jupternotebook和jupterLab有什么区别?

目录 1.jupternotebook 2.jupterLab 3.总结 Jupyter Notebook和JupyterLab是两个常用的交互式计算环境,都是基于Jupyter项目开发的。它们具有一些共同的特性,但也存在一些区别。 1.jupternotebook Jupyter Notebook是Jupyter项目的早期版本&#xff…

【数据结构】线性表的顺序存储结构

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.顺序存储定义 上篇文章中介绍了线性表一共分为两种数据结构——顺序存储结构和链式存储结构. 今天我们就来一起学习一下第一种——顺序存储结构. 线性表的顺序存储结构,指…

AUTOSAR AP硬核知识点梳理(1)

一 什么是 Adaptive AUTOSAR? Adaptive AUTOSAR是一种新的汽车软件框架,旨在满足现代汽车行业中不断增长的技术需求。随着汽车变得越来越智能,对处理器的性能要求也在不断增长。 Adaptive AUTOSAR旨在通过提供高性能计算和通信机制以及灵活的软件配置来满足这些需求,为车…

代码随想录算法训练营第五十三天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 视频讲解: https://programmercarl.com/0309.%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.html (1)代码 714.买卖股票的最佳时机含手续费…

通过字符设备驱动并编写应用程序控制三盏灯亮灭

现象 键盘按1三灯全亮 按0三灯全灭 头文件.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#defin…

底层驱动day2作业

控制三盏灯亮灭 代码: //head.h#ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_RCC 0x50000A28 #define PHY_GPIOE_MODER 0x50006000 #define PHY_GPIOF_MODER 0x50007000 #define PHY_GPIOE_ODR 0x50006014 #define PHY_GPIOF_ODR 0x50007014#endif //demo…

JAVA毕业设计100—基于Java+Springboot+Vue的WMS仓库管理系统+移动端微信小程序(源码+数据库+部署视频)

基于JavaSpringbootVue的WMS仓库管理系统移动端(源码数据库部署视频) 一、系统介绍 本系统前后端分离带小程序 本系统分为管理员、用户角色(角色权限可自行分配) 功能列表: 1、 数据管理:物料数据管理、物料Bom管理、物料组管理、物料分类管理、供应…

口袋参谋:如何提升宝贝的点击率?这两种方法超简单!

​如何提升宝贝的点击率?这是99.99%商家都在疑惑的问题。今天我说的两种方法,超简单,一起来看看吧! 1、找精准关键词 首先一定要选择适合自己店铺的关键词,一定要精准。 找关键词的方法如下: a.卖家可以…

Coreldraw2020最新64位电脑完整版本下载教程

安装之前所有的杀毒软件都要退出。无论是360,腾讯管家,或者电脑自带的安全中心,要不然会阻止安装。 CorelDRAW2020版win下载如下:https://wm.makeding.com/iclk/?zoneid55678 CorelDRAW2020版mac下载如下:https://wm.makeding.com/iclk/?…

2023年全球及中国溶瘤病毒治疗药物行业现状及发展趋势分析[图]

溶瘤病毒治疗肿瘤具有杀伤效率高、靶向性好、安全性高、不良反应小等特点,溶瘤病毒疗法已经成为肿瘤治疗研究领域的新热点。溶瘤病毒疗法经历了早期对于天然病毒的摸索,后期基因工程技术的进步提升OV靶向性及免疫致敏能力,推动其快速发展。 …

性能测试 —— 数据准备与基准场景设计!

基础性能脚本 延迟时间网络时间服务处理时间 主要使用监听器,通过两者的差值,判断响应时间消耗: jpgc - Connect Times Over Timejpgc - Response Times Over Time 调试脚本阶段,可以使用查看结果树等监听器来观察运行结果 正…

经典网络模型

Alexnet VGG VGG的启示 VGGNet采用了多次堆叠3x3的卷积核,这样做的目的是减少参数的数量。 例如,2个3x3的卷积核效果相当于1个5x5的卷积核效果,因为它们的感受野(输入图像上映射区域的大小)相同。但2个3x3卷积核的参数…

使用SpringCloudalibaba+Vue开发仿社交小程序全套视频课程

使用SpringCloudalibabaVue开发仿社交小程序全套视频课程 学习此课程你将会学到: 1. 熟练掌握小程序开发与部署2. 学会前后端分离开发与联调3. 从0到1学会微服务架构与落地4. 掌握主流中间件的封装与设计5. 掌握复杂数据库分库分表6. 收获一个商业级的面试作品 适…