C# 文件操作详解(一)File类

摘要:
C#对文件的操作相当方便,主要涉及到四个类:File、FileInfo、Directory、DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下:图1:类图下面通过实例来看下每个类的使用。如果目标文件已存在,则覆盖该文件。publicstaticFileStreamCreate;//摘要:创建或覆盖指定的文件,并指定缓冲区大小和一个描述如何创建或覆盖该文件的System.IO.FileOptions值。

C#对文件的操作相当方便,主要涉及到四个类:File、FileInfo、Directory、DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下:

C# 文件操作详解(一)File类第1张

图1:类图

下面通过实例来看下每个类的使用。

一、File类 File中提供了许多的静态方法,使用这些静态方法我们可以方便的对文件进行读写查等基本操作。

1、读文件

// 摘要:打开一个文件,将文件的内容读入一个字符串,然后关闭该文件。
publicstaticbyte[] ReadAllBytes(stringpath);
// 摘要: 打开一个文本文件,读取文件的所有行,然后关闭该文件。
publicstaticstring[] ReadAllLines(stringpath);
// 摘要:打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。
publicstaticstring[] ReadAllLines(stringpath, Encoding encoding);
// 摘要: 打开一个文本文件,读取文件的所有行,然后关闭该文件。
publicstaticstringReadAllText(stringpath);
// 摘要: 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。
publicstaticstringReadAllText(stringpath, Encoding encoding);
// 摘要: 读取文件的文本行。
publicstaticIEnumerable<string> ReadLines(stringpath);
// 摘要: 读取具有指定编码的文件的文本行。
publicstaticIEnumerable<string> ReadLines(stringpath, Encoding encoding);

2、写文件

// 摘要: 创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。如果目标文件已存在,则覆盖该文件。
publicstaticvoidWriteAllBytes(stringpath, byte[] bytes);
// 摘要:创建一个新文件,在其中写入一组字符串,然后关闭该文件。
publicstaticvoidWriteAllLines(stringpath, IEnumerable<string> contents);
// 摘要:创建一个新文件,在其中写入指定的字符串数组,然后关闭该文件。
publicstaticvoidWriteAllLines(stringpath, string[] contents);
// 摘要:使用指定的编码创建一个新文件,在其中写入一组字符串,然后关闭该文件。
publicstaticvoidWriteAllLines(stringpath, IEnumerable<string> contents, Encoding encoding);
// 摘要:创建一个新文件,使用指定的编码在其中写入指定的字符串数组,然后关闭该文件。
publicstaticvoidWriteAllLines(stringpath, string[] contents, Encoding encoding);
// 摘要: 创建一个新文件,在其中写入指定的字符串,然后关闭文件。如果目标文件已存在,则覆盖该文件。
publicstaticvoidWriteAllText(stringpath, stringcontents);
// 摘要: 创建一个新文件,在其中写入指定的字符串,然后关闭文件。如果目标文件已存在,则覆盖该文件。
publicstaticvoidWriteAllText(stringpath, stringcontents, Encoding encoding);

3、追加内容

// 摘要: 在一个文件中追加文本行,然后关闭该文件。
publicstaticvoidAppendAllLines(stringpath, IEnumerable<string> contents);
// 摘要:使用指定的编码向一个文件中追加文本行,然后关闭该文件。
publicstaticvoidAppendAllLines(stringpath, IEnumerable<string> contents, Encoding encoding);
// 摘要:打开一个文件,向其中追加指定的字符串,然后关闭该文件。如果文件不存在,此方法创建一个文件,将指定的字符串写入文件,然后关闭该文件。
publicstaticvoidAppendAllText(stringpath, stringcontents);
// 摘要:将指定的字符串追加到文件中,如果文件还不存在则创建该文件。
publicstaticvoidAppendAllText(stringpath, stringcontents, Encoding encoding);
// 摘要: 创建一个 System.IO.StreamWriter,它将 UTF-8 编码文本追加到现有文件。
publicstaticStreamWriter AppendText(stringpath);

4、创建文件

// 摘要:在指定路径中创建或覆盖文件。
publicstaticFileStream Create(stringpath);
// 摘要:创建或覆盖指定的文件。
publicstaticFileStream Create(stringpath, intbufferSize);
// 摘要:创建或覆盖指定的文件,并指定缓冲区大小和一个描述如何创建或覆盖该文件的 System.IO.FileOptions 值。
publicstaticFileStream Create(stringpath, intbufferSize, FileOptions options);
// 摘要:创建或覆盖具有指定的缓冲区大小、文件选项和文件安全性的指定文件。
publicstaticFileStream Create(stringpath, intbufferSize, FileOptions options, FileSecurity fileSecurity);

5、打开文件

// 摘要: 打开指定路径上的 System.IO.FileStream,具有读/写访问权限。
publicstaticFileStream Open(stringpath, FileMode mode);
// 摘要:以指定的模式和访问权限打开指定路径上的 System.IO.FileStream。
publicstaticFileStream Open(stringpath, FileMode mode, FileAccess access);
// 摘要:打开指定路径上的 System.IO.FileStream,具有指定的读、写或读/写访问模式以及指定的共享选项。
publicstaticFileStream Open(stringpath, FileMode mode, FileAccess access, FileShare share);
// 摘要:打开现有文件以进行读取。
publicstaticFileStream OpenRead(stringpath);

6、获取和设置文件属性

// 摘要:获取一个 System.Security.AccessControl.FileSecurity 对象,它封装指定文件的访问控制列表 (ACL) 条目。
publicstaticFileSecurity GetAccessControl(stringpath);
// 摘要:获取一个 System.Security.AccessControl.FileSecurity 对象,它封装特定文件的指定类型的访问控制列表 (ACL)项。
publicstaticFileSecurity GetAccessControl(stringpath, AccessControlSections includeSections);
// 摘要: 获取在此路径上的文件的 System.IO.FileAttributes。
publicstaticFileAttributes GetAttributes(stringpath);
// 摘要:返回指定文件或目录的创建日期和时间。
publicstaticDateTime GetCreationTime(stringpath);
// 摘要:返回指定的文件或目录的创建日期及时间,其格式为协调世界时 (UTC)。
publicstaticDateTime GetCreationTimeUtc(stringpath);
// 摘要:返回上次访问指定文件或目录的日期和时间。
publicstaticDateTime GetLastAccessTime(stringpath);
// 摘要: 返回上次访问指定的文件或目录的日期及时间,其格式为协调世界时 (UTC)。
publicstaticDateTime GetLastAccessTimeUtc(stringpath);
// 摘要:返回上次写入指定文件或目录的日期和时间。
publicstaticDateTime GetLastWriteTime(stringpath);
// 摘要: 返回上次写入指定的文件或目录的日期和时间,其格式为协调世界时 (UTC)。
publicstaticDateTime GetLastWriteTimeUtc(stringpath);
// 摘要:对指定的文件应用由 System.Security.AccessControl.FileSecurity 对象描述的访问控制列表 (ACL) 项。
publicstaticvoidSetAccessControl(stringpath, FileSecurity fileSecurity);
// 摘要:设置指定路径上文件的指定的 System.IO.FileAttributes。
publicstaticvoidSetAttributes(stringpath, FileAttributes fileAttributes);
// 摘要:设置创建该文件的日期和时间。
publicstaticvoidSetCreationTime(stringpath, DateTime creationTime);
// 摘要:设置文件创建的日期和时间,其格式为协调世界时 (UTC)。
publicstaticvoidSetCreationTimeUtc(stringpath, DateTime creationTimeUtc);
// 摘要:设置上次访问指定文件的日期和时间。
publicstaticvoidSetLastAccessTime(stringpath, DateTime lastAccessTime);
// 摘要:设置上次访问指定的文件的日期和时间,其格式为协调世界时 (UTC)。
publicstaticvoidSetLastAccessTimeUtc(stringpath, DateTime lastAccessTimeUtc);
// 摘要:设置上次写入指定文件的日期和时间。
publicstaticvoidSetLastWriteTime(stringpath, DateTime lastWriteTime);
// 摘要:设置上次写入指定的文件的日期和时间,其格式为协调世界时 (UTC)。
publicstaticvoidSetLastWriteTimeUtc(stringpath, DateTime lastWriteTimeUtc);

7、复制、移动、替换

// 摘要:将现有文件复制到新文件。不允许覆盖同名的文件。
publicstaticvoidCopy(stringsourceFileName, stringdestFileName);
// 摘要:将现有文件复制到新文件。允许覆盖同名的文件。
publicstaticvoidCopy(stringsourceFileName, stringdestFileName, booloverwrite);
// 摘要:将指定文件移到新位置,并提供指定新文件名的选项。
publicstaticvoidMove(stringsourceFileName, stringdestFileName);
// 摘要:使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。
publicstaticvoidReplace(stringsourceFileName, stringdestinationFileName, stringdestinationBackupFileName);
// 摘要: 用其他文件的内容替换指定文件的内容,删除原始文件,并创建被替换文件的备份和(可选)忽略合并错误。
publicstaticvoidReplace(stringsourceFileName, stringdestinationFileName, stringdestinationBackupFileName, boolignoreMetadataErrors);

8、加密解密、删除、判定是否存在

// 摘要:将某个文件加密,使得只有加密该文件的帐户才能将其解密。
publicstaticvoidEncrypt(stringpath);
// 摘要:解密由当前帐户使用 System.IO.File.Encrypt(System.String) 方法加密的文件。
publicstaticvoidDecrypt(stringpath);
// 摘要: 删除指定的文件。如果指定的文件不存在,则不引发异常
publicstaticvoidDelete(stringpath);
// 摘要:确定指定的文件是否存在。
publicstaticboolExists(stringpath);

通过上面的函数声明,大家应该很清楚如何是好这些方法了,这里就不举例说明了。

同时,看到如此多的函数,我们也很清楚的知道,File类已经可以满足我们对文件操作的基本需求了。File类通过静态方法的方式为我们提供了操作文件的途径。

FileInfo类 提供了与File类相同的功能,不同的是FileInfo提供的都是成员方法

1、读文件

1
2
3
4
//摘要:创建只读 System.IO.FileStream。
publicSystem.IO.FileStream OpenRead()
//摘要:创建使用 UTF8 编码、从现有文本文件中进行读取的 System.IO.StreamReader。<BR>public System.IO.StreamReader OpenText()

2、写文件

//摘要:创建只写 System.IO.FileStream。
publicSystem.IO.FileStream OpenWrite()

3、追加内容

//摘要:创建一个 System.IO.StreamWriter,它向 System.IO.FileInfo 的此实例表示的文件追加文本。
publicSystem.IO.StreamWriter AppendText()

4、打开文件

//摘要:在指定的模式中打开文件。
publicSystem.IO.FileStream Open(System.IO.FileMode mode)
//摘要:用读、写或读/写访问权限在指定模式下打开文件。
publicSystem.IO.FileStream Open(System.IO.FileMode mode, System.IO.FileAccess access)
//摘要:用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。
publicSystem.IO.FileStream Open(System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share)

5、复制、移动、替换

//摘要:将现有文件复制到新文件,不允许覆盖现有文件。
publicSystem.IO.FileInfo CopyTo(stringdestFileName)
//摘要:将现有文件复制到新文件,允许覆盖现有文件。
publicSystem.IO.FileInfo CopyTo(stringdestFileName, booloverwrite)
//摘要:将指定文件移到新位置,并提供指定新文件名的选项。
publicvoidMoveTo(stringdestFileName)
//摘要:使用当前 System.IO.FileInfo 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。
publicSystem.IO.FileInfo Replace(stringdestinationFileName, stringdestinationBackupFileName)
//摘要:使用当前 System.IO.FileInfo 对象所描述的文件替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。还指定是否忽略合并错误。
publicSystem.IO.FileInfo Replace(stringdestinationFileName, stringdestinationBackupFileName, boolignoreMetadataErrors)

6、加密解密、删除

//摘要:将某个文件加密,使得只有加密该文件的帐户才能将其解密。
publicvoidEncrypt()
//摘要:解密由当前帐户使用 System.IO.FileInfo.Encrypt() 方法加密的文件。
publicvoidDecrypt()
//摘要:永久删除文件。
publicoverridevoidDelete()

7、获得文件属性

//摘要:获取父目录的实例。
publicSystem.IO.DirectoryInfo Directory { get; }
//摘要:获取表示目录的完整路径的字符串。
publicstringDirectoryName { get; }
//摘要:获取指示文件是否存在的值。
publicoverrideboolExists { get; }
//摘要:获取或设置确定当前文件是否为只读的值。
publicboolIsReadOnly { set; get; }
//摘要:获取当前文件的大小(字节)。
publiclongLength { get; }
//摘要:获取文件名。
publicoverridestringName { get; }

在FileInfo中获取文件的相关属性不再是方法了,都是通过属性获得的,并且除是否只读属性为可读可写的,其他属性都是只读的。

小结

大家注意到,我们在介绍File类时,所有的操作都是通过静态方法实现的,并且返回值都是具体的值类型(暂且这样说),而在FileInfo中提供的方法不再是静态的,并且返回值都是FileStream类型的,是一个文件流,因此我们在使用FileInfo这个类时还需要结合FileStream类一起使用。

这也算是对File类与FileInfo类的错略的对比。

前面两篇介绍了File类和FileInfo类,对于文件的操作基本够用,但是后面还会补充一下FileStream相关的操作,例如StreamReader和StreamWriter的内容。本文主要介绍Directory类的使用,让我们一起看一下Directory类为我们提供了哪些操作。

Directory类 提供了大量的操作目录的静态方法,下面我们一一学习一下。

1、创建目录

1
2
3
4
// 摘要:按 path 的指定创建所有目录和子目录。
publicstaticDirectoryInfo CreateDirectory(stringpath);
// 摘要:创建指定路径中的所有目录,并应用指定的 Windows 安全性。
publicstaticDirectoryInfo CreateDirectory(stringpath, DirectorySecurity directorySecurity);

这里要说明一下,我们使用CreateDirectory方法时,不是只能创建一级目录,而是可以创建一个层级目录,只要你指定的目录路径无此目录,就可以创建。

2、删除目录

1
2
3
4
// 摘要:从指定路径删除空目录。
publicstaticvoidDelete(stringpath);
// 摘要:删除指定的目录并(如果指示)删除该目录中的任何子目录。
publicstaticvoidDelete(stringpath, boolrecursive);

我们看方法的注释可以知道,第一个方法只能删除一个空的目录,若删除非空目录会提示错误,如图:

C# 文件操作详解(一)File类第2张

第二个方法则是可以通过指定第二个参数来控制是否递归删除子目录,因此,建议在使用时先使用第一个方法,当捕获到异常时,再提示使用第二个方法递归删除(此处只是个人建议,并非固定模式)。

3、获取子目录、文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//获取目录集合<BR>// 摘要:返回指定路径中的目录名称的可枚举集合。
publicstaticIEnumerable<string> EnumerateDirectories(stringpath);
// 摘要:返回指定路径中与搜索模式匹配的目录名称的可枚举集合。
publicstaticIEnumerable<string> EnumerateDirectories(stringpath, stringsearchPattern);
// 摘要:返回指定路径中与搜索模式匹配的目录名称的可枚举集合,还可以搜索子目录。
publicstaticIEnumerable<string> EnumerateDirectories(stringpath, stringsearchPattern, SearchOption searchOption);
// 摘要:返回指定路径中的文件名的可枚举集合。
publicstaticIEnumerable<string> EnumerateFiles(stringpath);
// 摘要:返回指定路径中与搜索模式匹配的文件名称的可枚举集合。
publicstaticIEnumerable<string> EnumerateFiles(stringpath, stringsearchPattern);
// 摘要:返回指定路径中与搜索模式匹配的文件名称的可枚举集合,还可以搜索子目录。
publicstaticIEnumerable<string> EnumerateFiles(stringpath, stringsearchPattern, SearchOption searchOption);
// 摘要:返回指定路径中的文件系统项的可枚举集合。
publicstaticIEnumerable<string> EnumerateFileSystemEntries(stringpath);
// 摘要:返回指定路径中与搜索模式匹配的文件系统项的可枚举集合。
publicstaticIEnumerable<string> EnumerateFileSystemEntries(stringpath, stringsearchPattern);
// 摘要:返回指定路径中与搜索模式匹配的文件名称和目录名称的可枚举集合,还可以搜索子目录。
publicstaticIEnumerable<string> EnumerateFileSystemEntries(stringpath, stringsearchPattern, SearchOption searchOption);
//获取目录数组
// 摘要:获取指定目录中子目录的名称。
publicstaticstring[] GetDirectories(stringpath);
// 摘要:从当前目录获取与指定搜索模式匹配的目录的数组。
publicstaticstring[] GetDirectories(stringpath, stringsearchPattern);
// 摘要:获取当前目录中与指定搜索模式匹配并使用某个值确定是否在子目录中搜索的目录的数组。
publicstaticstring[] GetDirectories(stringpath, stringsearchPattern, SearchOption searchOption);
<BR>//获取文件
// 摘要:返回指定目录中的文件的名称。
publicstaticstring[] GetFiles(stringpath);
// 摘要: 返回指定目录中与指定搜索模式匹配的文件的名称。
publicstaticstring[] GetFiles(stringpath, stringsearchPattern);
// 摘要: 返回指定目录中文件的名称,该目录与指定搜索模式匹配并使用某个值确定是否在子目录中搜索。
publicstaticstring[] GetFiles(stringpath, stringsearchPattern, SearchOption searchOption);
// 摘要:返回指定目录中所有文件和子目录的名称。
publicstaticstring[] GetFileSystemEntries(stringpath);
// 摘要: 返回与指定搜索条件匹配的文件系统项的数组。
publicstaticstring[] GetFileSystemEntries(stringpath, stringsearchPattern);
// 摘要: 获取指定路径中与搜索模式匹配的所有文件名称和目录名称的数组,还可以搜索子目录。
publicstaticstring[] GetFileSystemEntries(stringpath, stringsearchPattern, SearchOption searchOption);

通过上述的方法我们可以完成目录的遍历功能,所以大家在练习本节的方法时,希望是以完成一个目录遍历的小例子为最终目的,我会在下篇中上传我做的一个目录遍历的程序给大家做参考,希望能给大家提供帮助。

4、获取和设置目录属性

// 摘要:获取一个 System.Security.AccessControl.DirectorySecurity 对象,该对象封装指定目录的访问控制列表(ACL) 项。
publicstaticDirectorySecurity GetAccessControl(stringpath);
// 摘要:获取一个 System.Security.AccessControl.DirectorySecurity 对象,它封装指定目录的指定类型的访问控制列表(ACL) 项。
publicstaticDirectorySecurity GetAccessControl(stringpath, AccessControlSections includeSections);
// 摘要:获取目录的创建日期和时间。
publicstaticDateTime GetCreationTime(stringpath);
// 摘要:获取目录创建的日期和时间,其格式为协调世界时 (UTC)。
publicstaticDateTime GetCreationTimeUtc(stringpath);
// 摘要:返回上次访问指定文件或目录的日期和时间。
publicstaticDateTime GetLastAccessTime(stringpath);
// 摘要:返回上次访问指定文件或目录的日期和时间,其格式为协调世界时 (UTC)。
publicstaticDateTime GetLastAccessTimeUtc(stringpath);
// 摘要: 返回上次写入指定文件或目录的日期和时间。
publicstaticDateTime GetLastWriteTime(stringpath);
// 摘要: 返回上次写入指定文件或目录的日期和时间,其格式为协调世界时 (UTC)。
publicstaticDateTime GetLastWriteTimeUtc(stringpath);
// 摘要:将 System.Security.AccessControl.DirectorySecurity 对象描述的访问控制列表 (ACL) 项应用于指定的目录。
publicstaticvoidSetAccessControl(stringpath, DirectorySecurity directorySecurity);
// 摘要:为指定的文件或目录设置创建日期和时间。
publicstaticvoidSetCreationTime(stringpath, DateTime creationTime);
// 摘要:设置指定文件或目录的创建日期和时间,其格式为协调世界时 (UTC)。
publicstaticvoidSetCreationTimeUtc(stringpath, DateTime creationTimeUtc);
// 摘要:设置上次访问指定文件或目录的日期和时间。
publicstaticvoidSetLastAccessTime(stringpath, DateTime lastAccessTime);
// 摘要:设置上次访问指定文件或目录的日期和时间,其格式为协调世界时 (UTC)。
publicstaticvoidSetLastAccessTimeUtc(stringpath, DateTime lastAccessTimeUtc);
// 摘要:设置上次写入目录的日期和时间。
publicstaticvoidSetLastWriteTime(stringpath, DateTime lastWriteTime);
// 摘要:设置上次写入某个目录的日期和时间,其格式为协调世界时 (UTC)。
publicstaticvoidSetLastWriteTimeUtc(stringpath, DateTime lastWriteTimeUtc);

5、移动、判断是否存在

1
2
3
4
// 摘要:将文件或目录及其内容移到新位置。
publicstaticvoidMove(stringsourceDirName, stringdestDirName);
// 摘要: 确定给定路径是否引用磁盘上的现有目录。
publicstaticboolExists(stringpath);

6、获取卷信息、根信息、当前工作目录

// 摘要:获取应用程序的当前工作目录。
publicstaticstringGetCurrentDirectory();
// 摘要:返回指定路径的卷信息、根信息或两者同时返回。
publicstaticstringGetDirectoryRoot(stringpath);
// 摘要:检索此计算机上格式为“<盘符>:\”的逻辑驱动器的名称。
publicstaticstring[] GetLogicalDrives();
// 摘要:检索指定路径的父目录,包括绝对路径和相对路径。
publicstaticDirectoryInfo GetParent(stringpath);
// 摘要: 将应用程序的当前工作目录设置为指定的目录。
publicstaticvoidSetCurrentDirectory(stringpath);

总结

以上即为Directory类中为我们提供的可使用方法,并且和File类一样,这些方法都是静态的,通过结合这些方法的使用我们可以完成对目录的所有操作,本文就没有提供相关的范例,在下篇中会提供一个使用以上方法完成的一个简单的目录检索工具。

免责声明:文章转载自《C# 文件操作详解(一)File类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF的DataGrid用法Nginx 下配置SSL证书的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]Quartus和Modelsim仿真ROM模块

新建一个工程 选择工程保存路径,为工程取一个名字 Page 2 of 5 直接点击next Page 4 of 5 直接点击next 下面为工程添加文件 需要注意模块名和模块所在文件的文件名要一致,下面的代码保存在Wave.v这个文件中 module Wave(     input i_clk,     input i_rst_n,     out...

mini.DataGrid使用说明

mini.DataGrid表格。实现分页加载、自定义列、单元格渲染、行编辑器、锁定列、过滤行、汇总行等功能。Extendmini.PanelUsage <div url="../data/AjaxService.aspx?method=SearchEmployees" > <div property=...

HashMap实现缓存

package com.cache; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; pub...

利用Func封装“方法重试”功能

利用Func封装“方法重试”功能   忙余,写个利用Func封装方法重试的功能。该方法主要实现带有返回参数的方法实现多次重试,只要返回的结果不是所限定的返回值,则自动重试X次。Talk is cheap. Show me the code. /// <summary> /// 执行重试方法 /// </summary> /// &l...

数据结构与算法80道

1. 把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。    10  /  6 14  / / 4 8 12 16  转换成双向链表 4=6=8=10=12=14=16。   首先我们定义的二元查找树 节点的数据结构如下:  struct BSTreeN...

(三)Java 高级特性

第一章 集合框架 集合框架是为表示和操作集合而规定的一种统一的标准系结构。集合框架都包含三个块内容对外的接口、接口的实现和集合运算的算法。 接口:表示集合的抽象数据类型,如Collection、List、Set、Map、Iterator。 实现:集合框架中接口的具体实现,如ArrayList、LinkedList、HashMap、HashSet。 算法:...