C# IO 相关功能整合

目录

删除文件和删除文件夹

拷贝文件到另一个目录

保存Json文件和读取Json文件

写入和读取TXT文件

打开一个弹框,选择 文件/文件夹,并获取路径

获取项目的Debug目录路径

获取一个目录下的所有文件集合

获取文件全路径、目录、扩展名、文件名称

判断两个文件是否相同

判断文件路径或文件是否存在

判断一个路径是文件夹还是文件


删除文件和删除文件夹

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 删除文件和文件夹
{class Program{static void Main(string[] args){string path1 = Environment.CurrentDirectory + "\\MyTest";string path2 = Environment.CurrentDirectory + "\\新建文本文档.txt";//删除文件夹if (Directory.Exists(path1))Directory.Delete(path1, true);//删除文件if (File.Exists(path2))File.Delete(path2);Console.ReadKey();}}
}

拷贝文件到另一个目录

/// <summary>
/// 拷贝文件到新的目录,如果存在则覆盖
/// </summary>
/// <param name="path1">要拷贝的文件,不能是文件夹</param>
/// <param name="path2">新的路径,可以使用新的文件名,但不能是文件夹</param>
public static void CopyFile(string path1, string path2)
{//string path1 = @"c:\SoureFile.txt";//string path2 = @"c:\NewFile.txt";try{FileInfo fi1 = new FileInfo(path1);FileInfo fi2 = new FileInfo(path2);//创建路径1文件//using (FileStream fs = fi1.Create()) { }if (!File.Exists(path1)){Console.WriteLine("要拷贝的文件不存在:" + path1);return;}//路径2文件如果存在,就删除//if (File.Exists(path2))//{//    fi2.Delete();//}//path2 替换的目标位置//true 是否替换文件,true为覆盖之前的文件fi1.CopyTo(path2,true);}catch (IOException ioex){Console.WriteLine(ioex.Message);}
}

另一种

/// <summary>
/// 拷贝文件到另一个文件夹下
/// </summary>
/// <param name="sourceName">源文件路径</param>
/// <param name="folderPath">目标路径(目标文件夹)</param>
public void CopyToFile(string sourceName, string folderPath)
{//例子://源文件路径//string sourceName = @"D:\Source\Test.txt";//目标路径:项目下的NewTest文件夹,(如果没有就创建该文件夹)//string folderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NewTest");if (!Directory.Exists(folderPath)){Directory.CreateDirectory(folderPath);}//当前文件如果不用新的文件名,那么就用原文件文件名string fileName = Path.GetFileName(sourceName);//这里可以给文件换个新名字,如下://string fileName = string.Format("{0}.{1}", "newFileText", "txt");//目标整体路径string targetPath = Path.Combine(folderPath, fileName);//Copy到新文件下FileInfo file = new FileInfo(sourceName);if (file.Exists){//true 为覆盖已存在的同名文件,false 为不覆盖file.CopyTo(targetPath, true);}
}

保存Json文件和读取Json文件

/// <summary>
/// 将序列化的json字符串内容写入Json文件,并且保存
/// </summary>
/// <param name="path">路径</param>
/// <param name="jsonConents">Json内容</param>
private static void WriteJsonFile(string path, string jsonConents)
{using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite)){fs.Seek(0, SeekOrigin.Begin);fs.SetLength(0);using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)){sw.WriteLine(jsonConents);}}
}/// <summary>
/// 获取到本地的Json文件并且解析返回对应的json字符串
/// </summary>
/// <param name="filepath">文件路径</param>
/// <returns>Json内容</returns>
private string GetJsonFile(string filepath)
{string json = string.Empty;using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite)){using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)){json = sr.ReadToEnd().ToString();}}return json;
}

写入和读取TXT文件

写入:

/// <summary>
/// 向txt文件中写入字符串
/// </summary>
/// <param name="value">内容</param>
/// <param name="isClearOldText">是否清除旧的文本</param>
private void Wriete(string value, bool isClearOldText = true)
{string path = "txt文件的路径";//是否清空旧的文本if (isClearOldText){//清空txt文件using (FileStream stream = File.Open(path, FileMode.OpenOrCreate, FileAccess.Write)){stream.Seek(0, SeekOrigin.Begin);stream.SetLength(0);}}//写入内容using (StreamWriter writer = new StreamWriter(path, true)){writer.WriteLine(value);}
}

读取:

/// <summary>
/// 读取txt文件,并返回文件中的内容
/// </summary>
/// <returns>txt文件内容</returns>
private string ReadTxTContent()
{try{string s_con = string.Empty;// 创建一个 StreamReader 的实例来读取文件 // using 语句也能关闭 StreamReaderusing (StreamReader sr = new StreamReader("txt文件的路径")){string line;// 从文件读取并显示行,直到文件的末尾 while ((line = sr.ReadLine()) != null){s_con += line;}}return s_con;}catch (Exception e){Console.WriteLine(e.Message);return null;}
}

打开一个弹框,选择 文件/文件夹,并获取路径

注意,选择文件和选择文件夹的用法不一样

选择文件夹

System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog();
dialog.Description = "请选择文件夹";
dialog.SelectedPath = "C:\\";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{Console.WriteLine("选择了文件夹路径:" + dialog.SelectedPath);
}

选择文件

OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;//该值确定是否可以选择多个文件
dialog.Title = "请选择文件";
dialog.Filter = "所有文件(*.*)|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{Console.WriteLine("选择了文件路径:" + dialog.FileName);
}

限制文件的类型

例1:

OpenFileDialog dialog = new OpenFileDialog();
//该值确定是否可以选择多个文件
dialog.Multiselect = false;
dialog.Title = "请选择文件";
dialog.Filter = "stp文件|*.stp|step文件|*.STEP|所有文件|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{string path = dialog.FileName;
}

例2:

OpenFileDialog dialog = new OpenFileDialog();
//该值确定是否可以选择多个文件
dialog.Multiselect = false;
dialog.Title = "请选择文件";
dialog.Filter = "图像文件|*.jpg*|图像文件|*.png|所有文件|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{string path = dialog.FileName;
}

保存文件

保存文件,用的是 SaveFileDialog 

代码

SaveFileDialog s = new SaveFileDialog();
s.Filter = "图像文件|*.jpg|图像文件|*.png|所有文件|*.*";//保存的文件扩展名
s.Title = "保存文件";//对话框标题
s.DefaultExt = "图像文件|*.jpg";//设置文件默认扩展名 
s.InitialDirectory = @"C:\Users\Administrator\Desktop";//设置保存的初始目录
if (s.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{string path = s.FileName;
}

获取项目的Debug目录路径

控制台程序:

string path = Environment.CurrentDirectory;

Winform:

string path = Application.StartupPath;

WPF:

string path = AppDomain.CurrentDomain.BaseDirectory;

获取一个目录下的所有文件集合

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Test
{class Program{//文件夹列表private static List<string> DirectorysList = new List<string>();//文件列表private static List<string> FilesinfoList = new List<string>();static void Main(string[] args){//路径string path1 = Environment.CurrentDirectory + "\\Test1";GetDirectoryFileList(path1);Console.ReadKey();}/// <summary>/// 获取一个文件夹下的所有文件和文件夹集合/// </summary>/// <param name="path"></param>private static void GetDirectoryFileList(string path){DirectoryInfo directory = new DirectoryInfo(path);FileSystemInfo[] filesArray = directory.GetFileSystemInfos();foreach (var item in filesArray){//是否是一个文件夹if (item.Attributes == FileAttributes.Directory){DirectorysList.Add(item.FullName);GetDirectoryFileList(item.FullName);}else{FilesinfoList.Add(item.FullName);}}}}
}

获取文件全路径、目录、扩展名、文件名称

代码:

using System;
using System.IO;class Program
{static void Main(string[] args){//获取当前运行程序的目录string fileDir = Environment.CurrentDirectory;Console.WriteLine("当前程序目录:" + fileDir);//一个文件目录string filePath = "C:\\JiYF\\BenXH\\BenXHCMS.xml";Console.WriteLine("该文件的目录:" + filePath);string str = "获取文件的全路径:" + Path.GetFullPath(filePath);   //-->C:\JiYF\BenXH\BenXHCMS.xmlConsole.WriteLine(str);str = "获取文件所在的目录:" + Path.GetDirectoryName(filePath); //-->C:\JiYF\BenXHConsole.WriteLine(str);str = "获取文件的名称含有后缀:" + Path.GetFileName(filePath);  //-->BenXHCMS.xmlConsole.WriteLine(str);str = "获取文件的名称没有后缀:" + Path.GetFileNameWithoutExtension(filePath); //-->BenXHCMSConsole.WriteLine(str);str = "获取路径的后缀扩展名称:" + Path.GetExtension(filePath); //-->.xmlConsole.WriteLine(str);str = "获取路径的根目录:" + Path.GetPathRoot(filePath); //-->C:\Console.WriteLine(str);Console.ReadKey();}
}

读取当前的文件夹名

using System;
using System.Collections.Generic;
using System.IO;namespace ListTest
{internal class Program{static void Main(string[] args){string fileDir = Environment.CurrentDirectory;DirectoryInfo dirInfo = new DirectoryInfo(fileDir);string currentDir = dirInfo.Name; Console.WriteLine(currentDir);string dirName = System.IO.Path.GetFileNameWithoutExtension(fileDir);Console.WriteLine(dirName);Console.ReadKey();}}
}

运行:

判断两个文件是否相同

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;namespace 判断两个文件是否相同
{class Program{static void Main(string[] args){//路径string path1 = Environment.CurrentDirectory + "\\Test1\\文件1.txt";string path2 = Environment.CurrentDirectory + "\\Test2\\文件1.txt";bool valid = isValidFileContent(path1, path2);Console.WriteLine("这两个文件是否相同:" + valid);Console.ReadKey();}public static bool isValidFileContent(string filePath1, string filePath2){//创建一个哈希算法对象using (HashAlgorithm hash = HashAlgorithm.Create()){using (FileStream file1 = new FileStream(filePath1, FileMode.Open), file2 = new FileStream(filePath2, FileMode.Open)){byte[] hashByte1 = hash.ComputeHash(file1);//哈希算法根据文本得到哈希码的字节数组byte[] hashByte2 = hash.ComputeHash(file2);string str1 = BitConverter.ToString(hashByte1);//将字节数组装换为字符串string str2 = BitConverter.ToString(hashByte2);return (str1 == str2);//比较哈希码}}}}
}

判断文件路径或文件是否存在

判断文件夹是否存在:

string path = Application.StartupPath + "\\新建文件夹";
if (!System.IO.Directory.Exists(path))
{System.IO.Directory.CreateDirectory(path);//不存在就创建目录
}

判断文件是否存在:

string path = Application.StartupPath + "\\新建文件夹\\test.txt"
if(System.IO.File.Exists(path)) 
{Console.WriteLine("存在该文件");
}
else
{Console.WriteLine("不存在该文件");
}

判断一个路径是文件夹还是文件

方式1

/// <summary>
/// 判断目标是文件夹还是目录(目录包括磁盘)
/// </summary>
/// <param name="filepath">路径</param>
/// <returns>返回true为一个文件夹,返回false为一个文件</returns>
public static bool IsDir(string filepath)
{FileInfo fi = new FileInfo(filepath);if ((fi.Attributes & FileAttributes.Directory) != 0){return true;}else{return false;}
}

方式2

if (File.Exists(add_file))
{Console.WriteLine("是文件");
}
else if (Directory.Exists(targetPath))
{Console.WriteLine("是文件夹");
}
else
{Console.WriteLine("都不是");
}

end

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

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

相关文章

WPF实现DiagramChart

1、文件架构 2、FlowChartStencils.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:s"clr-namespace:DiagramDesigner"xmlns:c&…

了解Unity编辑器之组件篇Miscellaneous(九)

一、Aim Constraint&#xff1a;是一种动画约束&#xff0c;用于使一个对象朝向另一个对象或一个指定的矢量方向 Activate按钮&#xff1a;用于激活或停用Aim Constraint。当Aim Constraint处于激活状态时&#xff0c;其约束效果将应用于目标对象。 Zero按钮&#xff1a;用于将…

Zabbix监控ActiveMQ

当我们在线上使用了ActiveMQ 后&#xff0c;我们需要对一些参数进行监控&#xff0c;比如 消息是否有阻塞&#xff0c;哪个消息队列阻塞了&#xff0c;总的消息数是多少等等。下面我们就通过 Zabbix 结合 Python 脚本来实现对 ActiveMQ的监控。 一、创建 Activemq Python 监控…

39. Linux系统下在Qt5.9.9中搭建Android开发环境

1. 说明 QT版本:5.9.9 电脑系统:Linux JDK版本:openjdk-8-jdk SDK版本:r24.4.1 NDK版本:android-ndk-r14b 效果展示: 2. 具体步骤 大致安装的步骤如下:①安装Qt5.9.9,②安装jdk,③安装ndk,④安装sdk,⑤在qt中配置前面安装的环境路径 2.1 安装Qt5.9.9 首先下载…

PHP8的数据类型-PHP8知识详解

在PHP8中&#xff0c;变量不需要事先声明&#xff0c;赋值即声明。 不同的数据类型其实就是所储存数据的不同种类。在PHP8.0、8.1中都有所增加。以下是PHP8的15种数据类型&#xff1a; 1、字符串&#xff08;String&#xff09;&#xff1a;用于存储文本数据&#xff0c;可以使…

VScode的简单使用

一、VScode的安装 Visual Studio Code简称VS Code&#xff0c;是一款跨平台的、免费且开源的现代轻量级代码编辑器&#xff0c;支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性&#xff0c;也拥有对git的开箱…

node.js 爬虫图片下载

主程序文件 app.js 运行主程序前需要先安装使用到的模块&#xff1a; npm install superagent --save axios要安装指定版,安装最新版会报错&#xff1a;npm install axios0.19.2 --save const {default: axios} require(axios); const fs require(fs); const superagent r…

STM32 UDS Bootloader开发-上位机篇-CANoe制作(2)

文章目录 前言CANoe增加NodeCAPL脚本获取GUI中的参数刷写过程诊断仪在线接收回调函数发送函数总结前言 在上一篇文章中,介绍了UDS Bootloadaer上位机软件基于CANoe的界面设计。本文继续介绍CAPL脚本的编写以实现刷写过程。 CANoe增加Node 在开始编写CAPL之前,需要在Simula…

Android 耗时分析(adb shell/Studio CPU Profiler/插桩Trace API)

1.adb logcat 查看冷启动时间和Activity显示时间&#xff1a; 过滤Displayed关键字&#xff0c;可看到Activity的显示时间 那上面display后面的是时间是指包含哪些过程的时间呢&#xff1f; 模拟在Application中沉睡1秒操作&#xff0c;冷启动情况下&#xff1a; 从上可知&…

【RTT驱动框架分析01】-pin/gpio驱动分析

0gpio使用测试 LED测试 #define LED1_PIN GET_PIN(C, 1) void led1_thread_entry(void* parameter) {rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);while(1){rt_thread_delay(50); //delay 500msrt_pin_write(LED1_PIN, PIN_HIGH);rt_thread_delay(50); //delay 50…

MySQL之深入InnoDB存储引擎——物理文件

文章目录 一、参数文件二、日志文件三、表结构定义文件四、InnoDB 存储引擎文件1、表空间文件2、重做日志文件 一、参数文件 当 MySQL 实例启动时&#xff0c;数据库会先去读一个配置参数文件&#xff0c;用来寻找数据库的各种文件所在位置以及指定某些初始化参数。在默认情况…

6-Linux的磁盘分区和挂载

Linux的磁盘分区和挂载 Linux分区查看所有设备的挂载情况 将磁盘进行挂载的案例增加一块磁盘的总体步骤1-在虚拟机中增加磁盘2- 分区3-格式化分区4-挂载分区5-进行永久挂载 磁盘情况查询查询系统整体磁盘使用情况查询指定目录的磁盘占用情况 磁盘情况-工作实用指令统计文件夹下…

Vue3搭建启动

Vue3搭建&启动 一、创建项目二、启动项目三、配置项目1、添加编辑器配置文件2、配置别名3、处理sass/scss4、处理tsx(不用的话可以不处理) 四、添加Eslint 一、创建项目 npm create vite 1.project-name 输入项目名vue3-vite 2.select a framework 选择框架 3.select a var…

关于前端框架vue2升级为vue3的相关说明

一些框架需要升级 当前&#xff08;202306&#xff09; Vue 的最新稳定版本是 v3.3.4。Vue 框架升级为最新的3.0版本&#xff0c;涉及的相关依赖变更有&#xff1a; 前提条件&#xff1a;已安装 16.0 或更高版本的Node.js&#xff08;摘&#xff09; 必须的变更&#xff1a;核…

C语言进阶——文件的打开(为什么使用文件、什么是文件、文件的打开和关闭)

目录 为什么使用文件 什么是文件 程序文件 数据文件 文件名 文件的打开和关闭 文件指针 打开和关闭 为什么使用文件 在之前学习通讯录时&#xff0c;我们可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯…

【弹力设计篇】聊聊灾备设计、异地多活设计

单机&集群架构 对于一个高可用系统来说&#xff0c;为了提升系统的稳定性&#xff0c;需要以下常用技术服务拆分、服务冗余、限流降级、高可用架构设计、高可用运维&#xff0c;而本篇主要详细介绍下&#xff0c;高可用架构设计。容灾备份以及同城多活&#xff0c;异地多活…

OpenCV实现高斯模糊加水印

# coding:utf-8 # Email: wangguisendonews.com # Time: 2023/4/21 10:07 # File: utils.pyimport cv2 import PIL from PIL import Image import numpy as np from watermarker.marker import add_mark, im_add_mark import matplotlib.pyplot as plt# PIL Image转换成OpenCV格…

redis分布式锁

Redis 作者继续论述&#xff0c;如果对方认为&#xff0c;发生网络延迟、进程 GC 是在步骤 3 之后&#xff0c;也就是客户端确认拿到了锁&#xff0c;去操作共享资源的途中发生了问题&#xff0c;导致锁失效&#xff0c;那这不止是 Redlock 的问题&#xff0c;任何其它锁服务例…

Flowable-任务-脚本任务

定义 脚本任务&#xff08;Script Task&#xff09;是一种自动执行的活动。当流程执行到达脚本任务时&#xff0c;会执行相应的 脚本&#xff0c;完毕后继续执行后继路线。脚本任务无须人为参与&#xff0c;可以通过定义脚本实现自定义的业务逻辑。 图形标记 脚本任务显示为…

数据结构基础:3.单链表的实现。

单链表的介绍和实现 一.基本概念1.基本结构2.结构体节点的定义&#xff1a; 二.功能接口的实现0.第一个节点&#xff1a;plist1打印链表2创建一个节点3.头插4.头删5.尾插6.尾删7.查找8.在pos之前插入x9.在pos之后插入x10.删除pos位置11.删除pos的后一个位置12.链表释放 三.整体…