好文档 - 专业文书写作范文服务资料分享网站

第06章 目录与文件管理

天下 分享 时间: 加入收藏 我要投稿 点赞

第6章 目录与文件管理

File.Move(path, path2);

Console.WriteLine(\文件由{0}移动到{1}\ //判断文件是否存在 if (File.Exists(path)) {

Console.WriteLine(\源文件存在\ } else {

Console.WriteLine(\源文件不存在\ } }

catch (Exception e) {

Console.WriteLine(\操作取消: {0}\ } } }

6.2.2 文件属性与设置

1.文件属性枚举值

FileAttributes枚举用于获取或设置目录或文件的属性,部分枚举值如表6-5所示。

表6-5 FileAttributes枚举值

成员名 Archive Compressed Directory Hidden ReadOnly SparseFile System Temporary 说明 文件的存档状态。应用程序使用此属性为文件加上备份或移除标记 文件已压缩 文件为一个目录 文件是隐藏的,因此没有包括在普通的目录列表中 文件为只读 文件为稀疏文件。稀疏文件一般是数据通常为零的大文件 文件为系统文件。文件是操作系统的一部分或由操作系统以独占方式使用 文件是临时文件。文件系统试图将所有数据保留在内存中以便更快地访问,而不是将数据刷新回大容量存储器中。不再需要临时文件时,应用程序会立即将其删除 2.文件属性的设置 对文件的属性FileAttributes进行设置,可以使用File类的SetAttributes方法。方法原型为:

public static void SetAttributes (string path, FileAttributes fileAttributes)

参数path为该文件的路径,fileAttributes为所需的FileAttributes枚举值。

3.文件属性的获取

获取指定路径上文件的属性FileAttributes,可以使用File类的GetAttributes方法。 方法原型为:

public static FileAttributes GetAttributes (string path)

参数path为该文件的路径。

【例6-7】设置指定文件的Archive和Hidden属性。

157

第6章 目录与文件管理

using System; using System.IO; using System.Text; class Test {

public static void Main() {

string path = @\ //如果文件存在,则删除文件。 if (!File.Exists(path)) {

File.Create(path); }

if ((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden) {

//显示文件

File.SetAttributes(path, FileAttributes.Archive); Console.WriteLine(\文件取消隐藏\ } else {

//隐藏文件

File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden); Console.WriteLine(\文件隐藏\ } } }

6.2.3 OpenFileDialog控件

OpenFileDialog控件用于显示用户打开文件的对话框。OpenFileDialog类属于System.Windows.Forms命名空间,无法继承该类。

使用此类可检查某个文件是否存在并打开该文件,ShowReadOnly属性确定是否在对话框中显示只读复选框;ReadOnlyChecked属性指示是否选中只读复选框。

调用OpenFileDialog类的ShowDialog方法,可以打开对话框,提示用户打开文件。如果用户在对话框中单击【打开】,则返回结果为DialogResult.OK,否则为DialogResult.Cancel。

【例6-8】单击Windows窗体按钮,打开OpenFileDialog对话框。

(1) 启动VS2005,创建一个名为OpenFileDialog的Windows应用程序项目。

(2) 在Form1.cs的【设计】窗口中,将Form1的【Text】属性值改为“OpenFileDialog示例”。打开工具箱,在“对话框”选项卡中选择OpenFileDialog控件,拖入到Form1窗体中。 (3) 在Form1窗体中,使用工具箱,展开“所有Windows窗体”选项卡,添加按钮控件button1和文本框控件textBox1。 (4) 添加button1的Click事件:

private void button1_Click(object sender, EventArgs e) {

DialogResult result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) {

158

第6章 目录与文件管理

textBox1.Text = openFileDialog1.FileName; } else {

textBox1.Text = \ } }

(5) 按键编译并运行,在运行界面中,单击【button1】按钮,弹出“打开”对话框,如图6-5所示,选择某路径下的文件,单击【打开】按钮,打开文件。

图6-5 打开文件对话框 图6-6 保存文件对话框

6.2.4 SaveFileDialog控件

SaveFileDialog控件用于显示用户保存文件的对话框,提示用户选择文件的保存位置。SaveFileDialog类属于System.Windows.Forms命名空间,无法继承该类。 使用此类可以打开和改写现有文件,也可以创建新文件。

调用SaveFileDialog类的ShowDialog方法,可以打开“另存为”对话框,如图6-6所示,提示用户选择文件的保存位置,并保存文件。如果用户在对话框中单击【保存】按钮,则返回结果为DialogResult.OK,否则为DialogResult.Cancel。

6.3 文件的读写

在System.IO命名空间中提供了多个类,用于进行数据文件和数据流的读写操作。

6.3.1 文件和流

文件(file)和流(stream)既有区别又有联系。文件是在各种媒质上(可移动磁盘、硬盘、光盘等)永久存储的数据的有序集合。它是一种进行数据读写操作的基本对象。通常情况下,文件按照树状目录进行组织,每个文件都有文件名、文件所在路径、创建时间、访问权限等属性。

流是字节序列的抽象概念,例如文件、输入输出设备、内部进程通信管道或者TCP/IP套接字等均可以看成流。简言之,流是一种向后备存储器写入字节和从后备存储器读取字节的方

159

第6章 目录与文件管理

式。

流也是进行数据读取操作的基本对象,流为我们提供了连续的字节流存储空间。虽然数据实际存储的位置可以不连续,甚至可以分布在多个磁盘上,但我们看到的是封装以后的数据结构,是连续的字节流抽象结构,这和一个文件也可以分布在磁盘上的多个扇区一样。

除了和磁盘文件直接相关的文件流以外,还有多种其它类型的流,例如分布在网络中、内存中和磁带中的流,分别称为网络流、内存流和磁带流。 所有表示流的类都是从抽象基类Stream继承的。 流有如下几种操作:

◆ 读取:从流中读取数据到变量中。 ◆ 写入:把变量中的数据写入到流中。

◆ 定位:重新设置流的当前位置,以便随机读写。

File类的静态方法主要是用于创建FileStream类。一个FileStream类的实例实际上代表一个磁盘文件,使用FileStream类可以对文件系统上的文件进行读取、写入、打开和关闭操作,也可以对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。由于FileStream能够对输入输出进行缓冲,因此可以提高系统的性能。

6.3.2 文件的打开

打开指定路径上的FileStream,可以使用File类的Open方法或OpenRead方法或OpenText方法。利用Open方法打开文件的方式有三种,如表6-6所示。

表6-6 Open方法的重载形式

名称 File.Open (String, FileMode) File.Open (String, FileMode, FileAccess) File.Open (String, FileMode, FileAccess, FileShare) 说明 打开指定路径上的 FileStream,具有读/写访问权限 以指定的模式和访问权限打开指定路径上的 FileStream 打开指定路径上的FileStream,具有指定的读、写或读/写访问模式以及指定的共享选项 FileMode值用于指定在文件不存在时是否创建该文件,并确定是保留还是改写现有文件的内容;FileAccess值指定可以对文件执行的操作;FileShare值指定其他线程所具有的对该文件的访问类型。

6.3.3 文本文件的读写

利用Open方法打开文件后,可以用StreamReader类来读取文件的内容,用StreamWriter类向文件写入内容,它们提供了按文本模式读写数据的方法。下面示例中用到的OpenText方法是File类的一个静态方法,不能被某个具体的File类的实例调用,它表示从一个已经存在的文本文件中读取一个文本流,并保存在一个StreamReader实例中。

【例6-9】从一个文本文件中读取内容并显示在屏幕上。

using System; using System.IO; class FileTest {

public static void Main()

160

第6章 目录与文件管理

{

StreamReader sr; try {

sr = File.OpenText(\ } catch {

Console.WriteLine(\文件打开失败\ return; }

while (sr.Peek()!=-1) {

String str = sr.ReadLine(); Console.WriteLine (str); }

Console.WriteLine (\到达文件结尾\ sr.Close(); } }

【例6-10】向文本文件中写入文本流。

using System; using System.IO; class FileTest {

public static void Main() {

StreamWriter sw; try {

sw = File.CreateText(\ } catch {

Console.WriteLine(\文件创建失败\ return; }

sw.WriteLine (\网址:\

sw.WriteLine (\ sw.WriteLine (\

sw.WriteLine (\ sw.WriteLine (\ sw.Close(); } }

6.3.4 二进制文件的读写

System.IO还为我们提供了BinaryReader和BinaryWriter类,用于按二进制模式读写文件。它们提供的一些读写方法是对称的,比如针对不同的数据结构,BinaryReader提供了ReadByte、

161

第06章 目录与文件管理

第6章目录与文件管理File.Move(path,path2);Console.WriteLine(\文件由{0}移动到{1}\//判断文件是否存在if(File.Exists(path)){
推荐度:
点击下载文档文档为doc格式
3l7wd5846y5ap1c1l9m9
领取福利

微信扫码领取福利

微信扫码分享