第三章 文件处理技术

简介:
本章重点介绍windows应用程序对文件读写所涉及的System.IO命名空间和FileFileInfoFileStreamBinaryReaderBinaryWriterBufferedStream等类,以及常用的方法、参数、属性、事件、枚举等。
u 本章的学习目标:
n 了解System.IO 命名空间
n 掌握读写文本文件的方法
n 掌握向文件读写二进制数据的方法
N 掌握读写内存流的方法

3-1  System.IO 命名空间

u 本节学习目标:
n 了解 System.IO 类和引用方式
n 了解 File 类的常用方法
n 了解 Fileinfo 类的常用方法和主要属性
n 学习实现文件的复制方法
n 学习如何获取文件基本信息方法
n 了解文件夹类 Directory 的常用方法
n 学习获取文件的基本信息方法
n 学习简易文本编辑器的开发
以字节形式向磁盘写数据通常称为字节流(比特流)。存储在磁盘上的字节集合称为文件。在 windows 应用程序中,经常会读取文件中的数据,也会把处理后的数据存放到文件中,这就需要对外存上的文件进行输入 / 输出( I/O )处理。例如:一名财务人员将单位的工资报表进行保存,应用程序就会将数据以 .xls 文件形式保存到硬盘上。而另一位在家休假的员工想浏览旅游期间拍摄的照片,应用程序就会读取存放在硬盘上的 .bmp 文件。第三位员工要保留与好友的聊天记录,应用程序就会将会话文本以 .txt 文件形式保存到硬盘上。如图 3 1 所示:
3-1   文件应用举例

3-1-1 System.IO类介绍

基于 .NET2.0 环境下的软件系统开发,已经把对文件的读写操作从底层转移到对类库的使用。类库结构中有个 System.IO 命名空间,里面包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型。列举一些常用的类,如表 3 1 所示:
3-1 System .IO  命名空间常用的类
说明
提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。
提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。无法继承此类。
FileStream
公开以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。
BinaryReader
用特定的编码将基元数据类型读作二进制值。
BinaryWriter
以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。
BufferedStream
给另一流上的读写操作添加一个缓冲层。无法继承此类。
Directory
公开用于创建、移动和枚举通过目录和子目录的静态方法。无法继承此类。
DirectoryInfo
公开用于创建、移动和枚举目录和子目录的实例方法。无法继承此类。
Path
对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。
StreamReader
实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。
StreamWriter
实现一个 TextWriter,使其以一种特定的编码向流中写入字符。
FileSysWatcher
侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。
这些类的结构如图 3 2 所示:
3-2  System .IO  命名空间的类结构图
还有几个常作为参数的枚举,如表32所示:
3-2  System .IO  命名空间常用的枚举
枚举
说明
FileMode
指定操作系统打开文件的方式。
FileShare
包含用于控制其他 FileStream 对象对同一文件可以具有的访问类型的常数。
FileAccess
定义用于控制对文件的读访问、写访问或读/写访问的常数。
小知识:
System.IO 命名空间的引用
在第一章提到了Using语句的使用,这里仍然建议使用Using来引用System.IO命名空间。在代码页的头部引用了System.IO命名空间
using  System.IO;
在代码中就可以随意使用其所包含的类及枚举了,例如:File.Creat()。否则,需要在代码处加上System.IO前缀,例如:System.IO. File.Creat()。
   通过MSDN查看System.IO命名空间
请打开MSDN,选中索引标签,在查找文本框内填入“System.IO”,在列表框中选中“System.IO命名空间”,右侧主页面会显示类、枚举、委托、结构列表。点击类“File”,就会看到关于类“File”的介绍,还包括语法、备注、示例、继承层次结构、线程安全、平台、版本信息、公共方法、参见。通过这些帮助文档,尤其是示例,很容易掌握类“File”的使用。

3-1-2  File类的常用方法

利用 MSDN 就可以掌握类 File 的使用,类 File 提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream  对象。类 File 有几个常用方法,如表 3 3 所示:
3-3  File 的常用方法
方法
说明
Move
将指定文件移到新位置,并提供指定新文件名的选项。
Delete
删除指定的文件。如果指定的文件不存在,则不引发异常。
Copy
已重载。 将现有文件复制到新文件。
CreateText
创建或打开一个文件用于写入 UTF-8 编码的文本。
OpenText
打开现有 UTF-8 编码文本文件以进行读取。
Open
已重载。 打开指定路径上的 FileStream

1 案例学习:了解File类的一些主要方法

下面的示例演示了 File 类的一些主要方法。
using  System;
using  System.IO;
class  Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path))
        {
            // 创建文件以便写入内容。
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }
        // 打开文件从里面读数据。
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
        try
        {
            string path2 = path + "temp";
            // 确认将要拷贝成的文件是否已经有同名的文件存在。
            File.Delete(path2);
            // 拷贝文件。
            File.Copy(path, path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);
            // 删除新生成的文件。
            File.Delete(path2);
            Console.WriteLine("{0} was successfully deleted.", path2);
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

3-1-3  Fileinfo类的常用方法

FileInfo 提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建  FileStream  对象。无法继承此类。类 FileInfo 有几个常用方法,如表 3 4 所示:
3-4  FileInfo 的常用属性
属性
说明
Attributes        
获取或设置当前 FileSystemInfo 的 FileAttributes。(从 FileSystemInfo 继承。)
获取或设置当前 FileSystemInfo 对象的创建时间。(从 FileSystemInfo 继承。)
获取父目录的实例。
获取表示目录的完整路径的字符串。
已重写。获取指示文件是否存在的值。
获取表示文件扩展名部分的字符串。(从 FileSystemInfo 继承。)




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/210935,如需转载请自行联系原作者

目录
相关文章
|
11天前
|
C++
C++语言学习文件操作应用案例
C++文件操作示例:创建`ofstream`对象写入"Hello, World!"到`output.txt`,刷新缓冲区,然后使用`ifstream`读取并打印文件内容。如果文件打开失败,程序将显示错误信息并返回1。
11 3
|
23天前
|
算法 程序员 编译器
【C++ 基础知识 】C++流操纵符全解析:从基础到高级应用
【C++ 基础知识 】C++流操纵符全解析:从基础到高级应用
77 0
|
1月前
|
存储 运维 搜索推荐
深入理解文件系统与文件操作:从基础概念到高级用法
深入理解文件系统与文件操作:从基础概念到高级用法
|
3月前
|
存储 数据处理 Python
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱-1
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱-1
|
3月前
|
编译器 C++
(保姆级)函数进阶内容以及静态库的基础知识
(保姆级)函数进阶内容以及静态库的基础知识
33 5
|
8月前
|
Shell Perl
Shell基础学习---4、文本处理工具、综合应用案例(归档文件、发送信息)
Shell基础学习---4、文本处理工具、综合应用案例(归档文件、发送信息)
|
10月前
|
C#
【C#编程最佳实践 十九】与文件相关的操作
【C#编程最佳实践 十九】与文件相关的操作
58 0
|
存储 Android开发 iOS开发
【重学C/C++系列(七)】:文件操作基础
内存中的数据在断电之后就会消失,如果需要**持久化数据**,则需要将数据写入到文件中
【重学C/C++系列(七)】:文件操作基础
|
移动开发 Java Unix
python初学者指南:文件操作重点(基本操作、文件模式)
python初学者指南:文件操作重点(基本操作、文件模式)
219 0
python初学者指南:文件操作重点(基本操作、文件模式)
|
存储 机器学习/深度学习 编译器
Python编程基础:文件基础
文件操作作为Python基础知识的一部分也非常的重要,熟练的掌握文件的各项操作,将来我们在数据分析、机器学习等一系列领域中才能更好的进行数据处理。
138 0
Python编程基础:文件基础