赞
踩
C#中操作文件的流模型——文件和流
System.IO模型:
System.IO模型中,借助文件流进行文件操作的常用步骤:
1、用File类打开操作系统文件
2、建立对应的文件流,即FileStream对象
3、用StreamReader/StreamWriter类提供的方法对文件流(文本文件)进行读/写或用BinaryReader/BinaryWriter类提供的方法对文件流(二进制文件)进行读/写。
System.IO
System.IO命名空间,包含用于在文件中读写数据的类,只有在C#应用程序中引用此名称空间才能访问这些类,而不必完全限定类型名。
用于访问文件系统的类
File | 静态实用类,提供许多静态方法,用于创建、移动、复制、打开和删除文件,并协助创建Filestream对象 |
Directory | 静态实用类,提供许多静态方法,公开用于创建、移动、复制和删除目录,枚举通过目录和子目录。无法继承此类 |
FileInfo | 表示磁盘上的物理文件,该类包含处理此文件的方法。要完成对文件的读写工作,就必须创建Stream对象。提供创建、复制、删除、移动和打开文件的实例方法,并帮助创建FileStream对象。无法继承此类 |
DirectoryInfo | 表示磁盘上的物理目录,该类保含处理此目录的方法。公开用于创建、移动、枚举目录和子目录的实例方法。无法继承此类 |
Path | 实用类,用于处理路径名称 |
FileStream | 公开以文件为主的Stream,既支持同步读/写操作,也支持异步读/写操作 |
MemoryStream | 创建其支持存储区为内存的流 |
Stream | 提供字节序列的一般视图 Stream类是所有流类的抽象基类,它提供了流的基本功能 |
StreamReader | 实现一个TextReader,使其以一种特定的编码从字节流中读取字符 |
StreamWriter | 实现一个TextWriter,使其以一种特定的编码向流中写入字符 |
StringReader | 实现从字符串进行读取的TextReader |
StringWriter | 实现一个用于将信息写入字符串的TextWriter。该信息存储在基础StringBuilder中 |
TextReader | 表示可读取连续字符系列的读取器 |
TextWriter | 表示可以编写一个有序字符系列的编写器。该类为抽象 |
BinaryReader | 用特定的编码将基元数据类型读作二进制值 |
FileSystemInfo | 用作FileInfo和DirectoryInfo的基类,可以使用多态性同时处理文件和目录 |
FileSystemWatcher | 用于监控文件和目录,提供了这些文件和目录发生变化时应用程序可以捕获的事件 |
DriveInfo | 提供对有关驱动器的信息的访问 |
System.IO命名空间的类大致可分为以下三组:
1、操作流的类:包括文件流、内存流、以及读/写这些流的类;
2、操作目录的类:包括对文件夹目录进行创建、移动、删除等操作,以及对磁盘信息进行访问的类;
3、操作文件的类:包括对文件进行创建、移动、删除等操作,以及获取文件信息等。
File类
部分常用方法
public static FileStream Create(string path);
官方摘要:在指定路径中创建或覆盖文件。
参数说明:
返回结果:一个 System.IO.FileStream,它提供对 path 中指定的文件的读/写访问。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- File.Create(@"E:\Test\abc.txt");
- File.Create(@"E:\Test\abc.doc");
- }
- }
- }
public static void Copy(string sourceFileName, string destFileName);
官方摘要:将现有文件复制到新文件。 不允许覆盖同名的文件。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- //File.Create(@"E:\Test\abc.txt");
-
- File.Copy(@"E:\Test\abc.txt", @"E:\Test\abcd.txt");
-
- }
- }
- }
public static void WriteAllText(string path, string contents);
官方摘要:创建一个新文件,向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- //File.Create(@"E:\Test\abc.txt");
-
- File.WriteAllText(@"E:\Test\abc.txt","石家庄");
-
- }
- }
- }
public static void Delete(string path);
官方摘要:删除指定的文件。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- //File.Create(@"E:\Test\abc.txt");
-
- File.Delete(@"E:\Test\abc.txt");
-
- }
- }
- }
public static bool Exists(string path);
官方摘要:确定指定的文件是否存在。
参数说明:
返回结果:如果调用方具有要求的权限并且 true 包含现有文件的名称,则为 path;否则为 false。 如果path为null (一个无效路径或零长度字符串),则此方法也将返回false。 如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回 false,这与 path 是否存在无关。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- File.Create(@"E:\Test\abc.txt");
-
- Console.WriteLine(File.Exists(@"E:\Test\abc.txt"));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- True
public static void AppendAllText(string path, string contents);
官方摘要:打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭该文件。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- //File.Create(@"E:\Test\abc.txt");
-
- //File.WriteAllText(@"E:\Test\abc.txt","石家庄");
-
- File.AppendAllText(@"E:\Test\abc.txt","新华区");
-
- }
- }
- }
public static DateTime GetCreationTime(string path);
官方摘要:返回指定文件或目录的创建日期和时间。
参数说明:
返回结果:一个 System.DateTime 结构,它被设置为指定文件或目录的创建日期和时间。 该值用本地时间表示。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
- File.Create(path);
- Console.WriteLine(File.GetCreationTime(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 14:51:13
public static DateTime GetCreationTimeUtc(string path);
官方摘要:返回指定的文件或目录的创建日期及时间,其格式为协调通用时 (UTC)。
参数说明:
返回结果:一个 System.DateTime 结构,它被设置为指定文件或目录的创建日期和时间。 该值用 UTC 时间表示。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
- File.Create(path);
- Console.WriteLine(File.GetCreationTimeUtc(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 6:51:13
public static DateTime GetLastAccessTime(string path);
官方摘要:返回上次访问指定文件或目录的日期和时间。
参数说明:
返回结果:一个 System.DateTime 结构,它被设置为上次访问指定文件或目录的日期和时间。 该值用本地时间表示。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
- //File.Create(path);
- Console.WriteLine(File.GetLastAccessTime(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 14:54:43
public static DateTime GetLastAccessTimeUtc(string path);
官方摘要:返回上次访问指定的文件或目录的日期及时间,其格式为协调通用时 (UTC)。
参数说明:
返回结果:一个 System.DateTime 结构,它被设置为上次访问指定文件或目录的日期和时间。 该值用 UTC 时间表示。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
- //File.Create(path);
- Console.WriteLine(File.GetLastAccessTimeUtc(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 6:54:43
public static DateTime GetLastWriteTime(string path);
官方摘要:返回上次写入指定文件或目录的日期和时间。
参数说明:
返回结果:一个 System.DateTime 结构,它被设置为上次写入指定文件或目录的日期和时间。 该值用本地时间表示。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- Console.WriteLine(File.GetLastWriteTime(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 15:02:14
public static DateTime GetLastWriteTimeUtc(string path);
官方摘要:返回上次写入指定的文件或目录的日期和时间,其格式为协调通用时 (UTC)。
参数说明:
返回结果:一个 System.DateTime 结构,它被设置为上次写入指定文件或目录的日期和时间。 该值用 UTC 时间表示。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- Console.WriteLine(File.GetLastWriteTimeUtc(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 7:02:14
public static void Move(string sourceFileName, string destFileName);
官方摘要:将指定文件移到新位置,提供要指定新文件名的选项。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string pathA = @"E:\TestA\abc.txt";
- string pathB = @"E:\TestB\abc.txt";
- File.Move(pathA, pathB);
-
- Console.ReadKey();
- }
- }
- }
public static string ReadAllText(string path);
官方摘要:打开一个文本文件,读取文件的所有行,然后关闭该文件。
参数说明:
返回结果:包含文件所有行的字符串。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- Console.WriteLine(File.ReadAllText(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- aaa
- bbb
- ccc
public static string[] ReadAllLines(string path);
官方摘要:打开一个文本文件,读取文件的所有行,然后关闭该文件。
参数说明:
返回结果:包含文件所有行的字符串数组。
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- foreach (var item in File.ReadAllLines(path))
- {
- Console.WriteLine(item);
- }
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- aaa
- bbb
- ccc
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
- string[]a = File.ReadAllLines(path);
- Console.WriteLine(a[1]);
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- bbb
public static void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName);
官方摘要:使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string pathA = @"E:\Test\abc.txt";
- string pathB = @"E:\Test\abcd.txt";
- string pathC = @"E:\Test\abcde.txt";
- File.Replace(pathA, pathB, pathC);
-
- Console.ReadKey();
- }
- }
- }
public static void Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName, bool ignoreMetadataErrors);
官方摘要:用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份,还可以忽略合并错误。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string pathA = @"E:\Test\abc.txt";
- string pathB = @"E:\Test\abcd.txt";
- string pathC = @"E:\Test\abcde.txt";
- File.Replace(pathA, pathB, pathC,true);
-
- Console.ReadKey();
- }
- }
- }
public static DateTime SetCreationTime(string path, DateTime creationTime);
官方摘要:设置创建该文件的日期和时间。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- File.SetCreationTime(path, new DateTime(2018,12,23,15,37,30));
-
- Console.WriteLine(File.GetCreationTime(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 15:37:30
public static void SetCreationTimeUtc(string path, DateTime creationTimeUtc);
官方摘要:设置文件创建的日期和时间,其格式为协调通用时 (UTC)。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- File.SetCreationTimeUtc(path, new DateTime(2018,12,23,7,37,30));
-
- Console.WriteLine(File.GetCreationTimeUtc(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 7:37:30
public static void SetLastAccessTime(string path, DateTime lastAccessTime);
官方摘要:设置上次访问指定文件的日期和时间。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- File.SetLastAccessTime(path, new DateTime(2018,12,23));
-
- Console.WriteLine(File.GetLastAccessTime(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 0:00:00
public static void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);
官方摘要:设置上次访问指定的文件的日期和时间,其格式为协调通用时 (UTC)。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- File.SetLastAccessTimeUtc(path, new DateTime(2018,12,23));
-
- Console.WriteLine(File.GetLastAccessTimeUtc(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 0:00:00
public static void SetLastWriteTime(string path, DateTime lastWriteTime);
官方摘要:设置上次写入指定文件的日期和时间。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- File.SetLastWriteTime(path, new DateTime(2018,12,23));
-
- Console.WriteLine(File.GetLastWriteTime(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 0:00:00
public static void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);
官方摘要:设置上次写入指定的文件的日期和时间,其格式为协调通用时 (UTC)。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
-
- File.SetLastWriteTimeUtc(path, new DateTime(2018,12,23));
-
- Console.WriteLine(File.GetLastWriteTimeUtc(path));
-
- Console.ReadKey();
- }
- }
- }
-
- --->
- 2018/12/23 0:00:00
public static void WriteAllLines(string path, string[] contents);
官方摘要:创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。
参数说明:
代码示例:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
-
- namespace Test_CSharp
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = @"E:\Test\abc.txt";
- string[] s = { "啊啊啊", "啵啵啵", "呲呲呲" };
-
- File.WriteAllLines(path, s);
-
- Console.ReadKey();
- }
- }
- }
System.IO.Compression
System.IO.Compression命名空间,允许读写压缩文件。
DeflateStream | 表示在写入时自动压缩数据或在读取时自动解压缩的流,使用Deflate算法来实现压缩 |
GZipStream | 表示在写入时自动压缩数据或在读取时自动解压缩的流,使用GZIP(GNUZip)算法来实现压缩 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。