c#文件操作
1、Path类
path类就是对字符串进行操作,和磁盘没关系
string path = @"C:\My Documents\exercises\ITCAST-102\ipmsg.exe";
名称 | 说明 | 例子 | 结果 |
---|---|---|---|
ChangeExtension | 更改路径字符串的扩展名。 | string 改变后缀名 = Path.ChangeExtension(path, ".txt"); | C:\My Documents\exercises\ITCAST-102\ipmsg.txt |
Combine(String[]) | 将字符串数组组合成一个路径。 | ||
Combine(String, String) | 组合两个路径字符串。 | string 连接两个路径 = Path.Combine(@"c:\abc\xyz\aa", "abc.txt"); | c:\abc\xyz\aa\abc.txt |
GetDirectoryName | 返回指定路径字符串的目录信息。 | string 截取路径 = Path.GetDirectoryName(path); | C:\My Documents\exercises\ITCAST-102 |
GetExtension | 返回指定的路径字符串的扩展名。 | string 只获取文件后缀 = Path.GetExtension(path); | .exe |
GetFileName | 返回指定路径字符串的文件名和扩展名。 | string 文件名带后缀 = Path.GetFileName(path); | ipmsg.exe |
GetFileNameWithoutExtension | 返回不具有扩展名的指定路径字符串的文件名。 | string 不带后缀文件名 = Path.GetFileNameWithoutExtension(path); | ipmsg |
GetFullPath | 返回指定路径字符串的绝对路径。 | ||
GetInvalidFileNameChars | 获取包含不允许在文件名中使用的字符的数组。 | ||
GetInvalidPathChars | 获取包含不允许在路径名中使用的字符的数组。 | ||
GetPathRoot | 获取指定路径的根目录信息。 | ||
GetRandomFileName | 返回随机文件夹名或文件名。 | ||
GetTempFileName | 在磁盘上创建一个唯一命名的,零字节临时文件,返回此文件的完整路径。 | string 得到临时唯一的文件名 =Path.GetTempFileName(); | C:\Users\Administrator\AppData\Local\Temp\tmpDD57.tmp |
GetTempPath | 返回当前系统临时文件夹的路径。 | string 获取系统临时文件夹路径 = Path.GetTempPath();//比如解压文件时, | C:\Users\Administrator\AppData\Local\Temp\ |
HasExtension | 确定路径是否包括文件扩展名。 | ||
IsPathRooted | 获取指示指定的路径字符串是否包含根的值。 |
2、Directory类
假设:string path = "c:\\a";
名称 | 说明 | 例子 | 结果 |
---|---|---|---|
CreateDirectory | 按照 path 的指定创建所有目录和子目录。 | Directory.CreateDirectory(path); | c盘根目录多了一个a文件夹 |
Delete(String) | 从指定路径删除空目录。 | Directory.Delete(@"c:\a"); //只能删除空目录 | 将a文件夹删除,里面必须为空 |
Delete(String, Boolean) | 删除指定的目录并(如果指示)删除该目录中的所有子目录和文件。 | Directory.Delete(@"c:\a", true);//可以删除整个目录连同子目录和文件 | 将a文件夹删除,里面可以有内容 |
Exists | 确定给定路径是否引用磁盘上的现有目录。 | bool 判断目录是否存在 = Directory.Exists(@"c:\a"); //不会验证文件.只对目录操作 | |
GetCreationTime | 获取目录的创建日期和时间。 | ||
GetCurrentDirectory | 获取应用程序的当前工作目录。 | ||
GetDirectories(String) | 获取指定目录中的子目录的名称(包括其路径)。 | string[] 获取所有子目录 = Directory.GetDirectories(path); | |
GetDirectories(String, String) | 在当前目录获取与指定搜索模式匹配的目录的数组(包括它们的路径)。 | string[] 搜索带条件子目录 = Directory.GetDirectories(path, "*a*", SearchOption.AllDirectories);//指定目录及其所有子目录 | |
GetDirectoryRoot | 返回指定路径的卷信息、根信息或两者同时返回。 | ||
GetFiles(String) | 返回指定目录中的文件的名称。 | string[] 获取所有子文件 = Directory.GetFiles(path);//获取所有文件 | |
GetFiles(String, String) | 返回指定目录中与指定搜索模式匹配的文件的名称。 | string[] 搜索带条件子文件 = Directory.GetFiles(path, "*a*", SearchOption.AllDirectories); //搜索包含字母a的文件名 | |
GetFileSystemEntries(String) | 返回指定目录中所有文件和子目录的名称。 | ||
GetFileSystemEntries(String, String) | 返回与指定搜索条件匹配的文件系统项的数组。 | ||
GetLastAccessTime | 返回上次访问指定文件或目录的日期和时间。 | ||
GetLastWriteTime | 返回上次写入指定文件或目录的日期和时间。 | ||
Move | 将文件或目录及其内容移到新位置。 | Directory.Move(@"c:\x", @"c:\xyz");//重命令 //Directory.Move(@"c:\aaa", @"c:\x\aaa");//剪切 | |
SetCurrentDirectory | 安全非常关键。 将应用程序的当前工作目录设置为指定的目录。 |
3、File类
string[] strArray=new string[]{"美国","中国","日本","印度","韩国"};
byte[] byteArray = new byte[] {10,23,221,22,1 };
string path=@"c:\1.txt";
操作 | 名称 | 说明 | 例子 | 结果 |
---|---|---|---|---|
AppendAllLines(String, IEnumerable<String>) | 在一个文件中追加文本行,然后关闭该文件。 | |||
AppendAllLines(String, IEnumerable<String>, Encoding) | 使用指定的编码向一个文件中追加文本行,然后关闭该文件。 | |||
AppendAllText(String, String) |
打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法创建一个文件, 将指定的字符串写入文件,然后关闭该文件。 |
|||
AppendAllText(String, String, Encoding) | 将指定的字符串追加到文件中,如果文件还不存在则创建该文件。 | |||
AppendText | 创建一个 StreamWriter,它将 UTF-8 编码文本追加到现有文件。 | StreamWriter sw = File.AppendText("c:\\1.txt");
sw.Write("nihaoya"); |
||
Copy(String, String) | 将现有文件复制到新文件。 不允许覆盖同名的文件。 | |||
Copy(String, String, Boolean) | 将现有文件复制到新文件。 允许覆盖同名的文件。boolean为true覆盖同名文件 | File.Copy(@"c:\tempuploads\newFile.txt",@"c:\tempuploads\BackUp.txt",true); | ||
Create(String) | 在指定路径中创建或覆盖文件。 | FileStream NewText=File.Create(@"c:\tempuploads\newFile.txt"); NewText.Close(); |
||
Create(String, Int32) | 创建或覆盖指定的文件。 | |||
Create(String, Int32, FileOptions) | 创建或覆盖指定的文件,并指定缓冲区大小和一个描述如何创建或覆盖该文件的FileOptions 值。 | |||
Create(String, Int32, FileOptions, FileSecurity) | 创建或覆盖具有指定的缓冲区大小、文件选项和文件安全性的指定文件。 | |||
CreateText | 创建或打开一个文件用于写入 UTF-8 编码的文本。 | |||
Decrypt | 解密由当前帐户使用 Encrypt 方法加密的文件。 | |||
Delete | 删除指定的文件。 | File.Delete(@"c:\tempuploads\newFile.txt"); | ||
Encrypt | 将某个文件加密,使得只有加密该文件的帐户才能将其解密。 | |||
Exists | 确定指定的文件是否存在。public static bool Exists(string path); | if(File.Exists(@"c:\tempuploads\newFile.txt")) //判断文件是否存在 | ||
GetAccessControl(String) | 获取一个 FileSecurity 对象,它封装指定文件的访问控制列表 (ACL) 条目。 | |||
GetAccessControl(String, AccessControlSections) | 获取一个 FileSecurity 对象,它封装特定文件的指定类型的访问控制列表 (ACL) 项。 | |||
GetAttributes | 获取在此路径上的文件的 FileAttributes。 | |||
GetCreationTime | 返回指定文件或目录的创建日期和时间。 | |||
GetCreationTimeUtc | 返回指定的文件或目录的创建日期及时间,其格式为协调世界时 (UTC)。 | |||
GetLastAccessTime | 返回上次访问指定文件或目录的日期和时间。 | |||
GetLastAccessTimeUtc | 返回上次访问指定的文件或目录的日期及时间,其格式为协调世界时 (UTC)。 | |||
GetLastWriteTime | 返回上次写入指定文件或目录的日期和时间。 | |||
GetLastWriteTimeUtc | 返回上次写入指定的文件或目录的日期和时间,其格式为协调世界时 (UTC)。 | |||
Move | 将指定文件移到新位置,只能在同一个逻辑盘下进行文件转移。如果试图将c盘下的文件转移到d盘,将发生错误。 | File.Move(@"c:\tempuploads\BackUp.txt",@"c:\BackUp.txt"); | ||
Open(String, FileMode) | 打开指定路径上的 FileStream,具有读/写访问权限。 | FileStream TextFile=File.Open(@"c:\tempuploads\newFile.txt",FileMode.Append); byte [] Info = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'}; TextFile.Write(Info,0,Info.Length); TextFile.Close(); |
||
Open(String, FileMode, FileAccess) | 以指定的模式和访问权限打开指定路径上的 FileStream。 | |||
Open(String, FileMode, FileAccess, FileShare) | 打开指定路径上的 FileStream,具有指定的读、写或读/写访问模式以及指定的共享选项。 | |||
OpenRead | 打开现有文件以进行读取。 | |||
OpenText | 打开现有 UTF-8 编码文本文件以进行读取。 | |||
OpenWrite | 打开一个现有文件或创建一个新文件以进行写入。 | |||
ReadAllBytes | 打开一个文件,将文件的内容读入一个字符串,然后关闭该文件。 | |||
ReadAllLines(String) | 打开一个文本文件,读取文件的所有行,然后关闭该文件。 | |||
ReadAllLines(String, Encoding) | 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。 | |||
ReadAllText(String) | 打开一个文本文件,读取文件的所有行,然后关闭该文件。 | |||
ReadAllText(String, Encoding) | 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。 | |||
ReadLines(String) | 读取文件的文本行。 | |||
ReadLines(String, Encoding) | 读取具有指定编码的文件的文本行。 | |||
Replace(String, String, String) | 使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。 | |||
Replace(String, String, String, Boolean) | 用其他文件的内容替换指定文件的内容,删除原始文件,并创建被替换文件的备份和(可选)忽略合并错误。 | |||
SetAccessControl | 对指定的文件应用由 FileSecurity 对象描述的访问控制列表 (ACL) 项。 | |||
SetAttributes | 设置指定路径上文件的指定的 FileAttributes。 | File.SetAttributes(@"c:\tempuploads\newFile.txt",FileAttributes.ReadOnly|FileAttributes.Hidden); | ||
SetCreationTime | 设置创建该文件的日期和时间。 | |||
SetCreationTimeUtc | 设置文件创建的日期和时间,其格式为协调世界时 (UTC)。 | |||
SetLastAccessTime | 设置上次访问指定文件的日期和时间。 | |||
SetLastAccessTimeUtc | 设置上次访问指定的文件的日期和时间,其格式为协调世界时 (UTC)。 | |||
SetLastWriteTime | 设置上次写入指定文件的日期和时间。 | |||
SetLastWriteTimeUtc | 设置上次写入指定的文件的日期和时间,其格式为协调世界时 (UTC)。 | |||
WriteAllBytes | 创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。 如果目标文件已存在,则覆盖该文件。 | File.WriteAllBytes(path,byteArray); | ||
WriteAllLines(String, IEnumerable<String>) | 创建一个新文件,在其中写入一组字符串,然后关闭该文件。 | |||
WriteAllLines(String, String[]) | 创建一个新文件,在其中写入指定的字符串数组,然后关闭该文件。 | File.WriteAllLines(@"c:\1.txt", strArray); | ||
WriteAllLines(String, IEnumerable<String>, Encoding) | 使用指定的编码创建一个新文件,在其中写入一组字符串,然后关闭该文件。 | |||
WriteAllLines(String, String[], Encoding) | 创建一个新文件,使用指定的编码在其中写入指定的字符串数组,然后关闭该文件。 | |||
WriteAllText(String, String) | 创建一个新文件,在其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。 | |||
WriteAllText(String, String, Encoding) | 创建一个新文件,在其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。 |
此外,File类对于Text文本提供了更多的支持。
· AppendText:将文本追加到现有文件
· CreateText:为写入文本创建或打开新文件
· OpenText:打开现有文本文件以进行读取
但上述方法主要对UTF-8的编码文本进行操作,从而显得不够灵活。在这里推荐读者使用下面的代码对txt文件进行操作。
· 对txt文件进行“读”操作,示例代码如下:
StreamReader TxtReader = new StreamReader(@"c:\tempuploads\newFile.txt",System.Text.Encoding.Default); string FileContent; FileContent = TxtReader.ReadEnd(); TxtReader.Close();
· 对txt文件进行“写”操作,示例代码如下:
StreamWriter = new StreamWrite(@"c:\tempuploads\newFile.txt",System.Text.Encoding.Default); string FileContent; TxtWriter.Write(FileContent); TxtWriter.Close();
希望本文所述对大家的C#程序设计有所帮助。
下表描述了用于自定义各种 File 方法的行为的枚举。
Enumeration |
说明 |
---|---|
指定对文件的读取和写入访问。 |
|
为已在使用中的文件指定允许的访问级别。 |
|
指定是保留还是覆盖现有文件的内容,并指定创建现有文件的请求是否会导致异常。 |