前言
我记得我之前的博客是写过C#
实例相关的文章,但是考虑到过于琐碎,我并没有那么多时间,所以指拿出来文件操作的部分来记录,因为对于程序来说,输入和输出的使用频率和重要性会更高一些。
本篇内容参考自 互联网,哔哩哔哩相关视频,《C#开发实例》以及本人经验
获取文件基本信息
获取文件的大小
方法说明
获取文件大小,需要使用File
类的Open
方法开打开指定的文件,然后使用FileStream
类的Length
属性获取文件的长度。
-
File
类的Open
方法File
类的Open
根据传入的文件路径,获取其FileStream
并返回,函数签名如下:public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share); public static FileStream Open(string path, FileMode mode, FileAccess access); public static FileStream Open(string path, FileMode mode);
-
path
:文件路径 -
mode
:FileMode
枚举值之一,用于指定在文件不存在时或者其他情况的相关操作。枚举值 说明 CreateNew = 1
指定操作系统创建一个新的文件 Create = 2
同上,如果文件已经存在,则将其覆盖 Open = 3
指定操作系统打开现有文件 OpenOrCreate = 4
指定操作系统打开文件(如果文件存在),否则,创建新文件 Truncate = 5
指定操作系统应打开现有文件。 当打开文件时,被截断其大小为零字节。 Append = 6
打开现有文件并查找到文件尾,或者创建新文件并打开。 -
返回值:返回指定路径文件的
FileStream
,具有读/写访问权限并且不共享。
-
-
FileStream
类的Length
属性其返回值以字节为单位,函数签名如下:
public override long Length { get; }
和文件相关的操作,需要引入命名空间
System.IO
代码示例
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
label1.Text = ((File.Open(openFileDialog.FileName, FileMode.Open).Length/1024.00)/1024.00).ToString() + "MB";
}

获取文件拓展名
方法说明
获取文件拓展名主要是在字符串上进行操作,截断最后的.xxx
返回,需要使用如下函数签名:
public String Substring(int startIndex, int length);
startIndex
:子字符串的起始字符位置length
:要截取的字符数- 返回值:截取的字符串
代码示例
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
label1.Text = openFileDialog.FileName.Substring(openFileDialog.FileName.LastIndexOf(".") + 1, openFileDialog.FileName.Length - openFileDialog.FileName.LastIndexOf(".")-1).ToString();
}

获取文件创建时间
方法说明
需要使用FileInfo
类,该类型主要提供创建,复制,删除,移动和打开文件的实例方法。函数签名如下:
public DateTime CreationTime { get; set; }
代码示例
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
label1.Text = fileInfo.CreationTime.ToString();
}

获取文件最后一次修改时间
方法说明
同样的需要使用到FileInfo
类的LastWriteTime
属性,函数签名如下:
public DateTime LastWriteTime { get; set; }
代码示例
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
FileInfo fileInfo = new FileInfo(openFileDialog.FileName);
label1.Text = fileInfo.LastWriteTime.ToString();
}

获取文件名中禁止使用的字符
在 Win 系统中创建文件时,存在部分非法字符,系统会提示错误,获取非法字符有哪些是本实例要做的。
方法说明
主要使用到了Path
类的GetInvalidFileNameChars
方法,其函数签名如下:
public static char[] GetInvalidFileNameChars();
- 返回值:
char
类型的数组,包含所有非法字符
代码示例:
foreach(char c in Path.GetInvalidFileNameChars())
{
richTextBox1.Text += c+"\n";
}

文件的创建和删除
创建和删除文件
方法说明
使用到了File
类的Create
和Delete
方法:
-
File
类的Create
方法,函数签名如下:public static FileStream Create(string path);
path
:文件路径和名称- 返回值:
FileStream
类,可以对路径文件进行读写
如果路径文件存在,该方法会覆盖文件创建新文件
-
File
类的Delete
方法,函数签名如下:public static void Delete(string path);
path
:指定路径文件
代码示例
string filename;
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
filename = saveFileDialog.FileName;
FileStream fileStream = File.Create(saveFileDialog.FileName);
MessageBox.Show("创建文件成功");
fileStream.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
File.Delete(filename);
}

生成随机文件名或者文件夹名
方法说明
需要用到**Guid
(全局唯一标识符)**类的NewGuid
方法,其函数签名如下:
public static Guid NewGuid();
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了 2128(3.4×1038)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
代码示例
//创建文件
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
File.Create(folderBrowserDialog.SelectedPath + Guid.NewGuid().ToString() + ".txt").Close();
}
}
//创建文件夹
private void button2_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
Directory.CreateDirectory(folderBrowserDialog.SelectedPath + Guid.NewGuid().ToString());
}
}

建立临时文件
当用户在程序中新建一个文件时,但是尚未保存和命名时,所有建立的文件都是保存在内存中的,显然这样做是很危险的。如果突然死机或者其他原因造成了程序在未保存文件之前就关闭,那么将损失严重。如果在文件建立的同时在就磁盘中存储数据,将不会造成如上损失。这个时候就需要创建临时文件来保存数据。
方法说明
需要先使用Path
类的GetTempFileName
方法获得临时文件名称,然后使用FileInfo
类的AppendText
方法向临时文件写入数据。
===============
待更新......'
Q.E.D.