文件处理技术
- System.IO命名空间
- File类的常用方法
- FileInfo类的常用方法
- 文件夹类Directory的常用方法
System.IO命名空间
System.IO命名空间常用的类
类 | 说明 |
---|---|
File | 提供用于创建,复制,删除,移动和打开文件的静态方法,并协助创建FileStream对象 |
FileInfo | 提供用于创建,复制,删除,移动和打开文件的实例方法,并且帮助创建FileStream对象。无法继承此类 |
FileStream | 公开以文件为主的Stream,即支持同步读写操作,也支持异步读写操作 |
BinaryReader | 用特定的编码将基元数据类型读作二进制值 |
BinaryWriter | 以二进制形式将基元类型写入流,并支持用特定的编码写入字符串 |
BufferedStream | 给另一流上的读写操作添加一个缓冲层。无法继承此类 |
Directory | 公开用于创建,移动和枚举目录和子目录的静态方法。无法继承此类 |
DirectoryInfo | 公开用于创建,移动和枚举目录和子目录的实例方法。无法继承此类 |
Path | 对包含文件或目录路径信息的String实例执行操作。这些操作是以跨平台的方式执行的 |
StreamReader | 实现一个TextReader,使其以一种特定的编码从字节流中读取字符 |
StreamWriter | 实现一个TextWriter,使其以一种特定的编码向字节流中写入字符 |
FileSysWatcher | 侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件 |
System.IO命名空间常用的枚举
枚举 | 说明 |
---|---|
FileMode | 指定操作系统打开文件的方式 |
FileShare | 包含用于控制其他FileStream对象对同一文件可以具有的访问类型的常数 |
FileAccess | 定义用于控制对文件的读访问,写访问或读/写访问的常数 |
File类的常用方法
方法 | 说明 |
---|---|
Move | 将指定文件移到新位置,并提供指定新文件名的选项 |
Delete | 删除指定的文件。如果指定的文件不存在,则不引发异常 |
Copy | 已重载。将现有文件复制到新文件 |
CreateText | 创建或打开一个文件用于写入UTF-8编码的文本 |
OpenText | 打开现有UTF-8编码文本文件以进行读取 |
Open | 已重载。打开指定路径上的FileStream |
private void FileDemo()
{
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 ex)
{
Console.WriteLine("The process failed:{0}", ex.ToString());
}
}
FileInfo类的常用方法
FileInfo提供创建,复制,删除,移动和打开文件的实例方法,并且帮助创建FileStream对象。
属性 | 说明 |
---|---|
Attributes | 获取或设置当前FileSystemInfo对象的FileAttributes属性(从FileSystemInfo类继承) |
CreationTime | 获取或设置当前FileSystemInfo对象的创建时间(从FileSystemInfo类继承) |
Directory | 获取父目录的实例 |
DirectoryName | 获取表示目录的完成整路径的字符串 |
Exists | 已重写。获取指示文件是否存在的值 |
Extension | 获取表示文件扩展名部分的字符串(从FileSystemInfo类继承) |
private void FileInfoDemo()
{
string fileName = "C:\\temp\\autoexec.bat";
FileInfo fileInfo = new FileInfo(fileName);
if (fileInfo.Exists)
{
return;
}
Console.WriteLine("{0} has a directoryName of {1}", fileName, fileInfo.DirectoryName);
}
File和FileInfo综合示例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace FileProcess
{
public partial class FormFileDemo : Form
{
public FormFileDemo()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string target = @"C:\temp\1.txt";
if (File.Exists(target))
{
File.Delete(target);
}
File.CreateText(target);
MessageBox.Show("文件创建成功!");
}
private void button2_Click(object sender, EventArgs e)
{
string someFile = @"C:\temp\F1.txt";
string target = @"C:\temp\1.txt";
if (!File.Exists(someFile))
{
MessageBox.Show("文件不存在!");
}
else
{
if (File.Exists(target))
{
File.Delete(target);
}
File.Copy(someFile, target);
MessageBox.Show("文件复制成功!");
}
}
private void button3_Click(object sender, EventArgs e)
{
string target = @"C:\temp\1.txt";
if (File.Exists(target))
{
File.Delete(target);
MessageBox.Show("文件删除成功!");
}
}
private void button4_Click(object sender, EventArgs e)
{
string somefile = @"C:\temp\1.txt";
FileInfo myFile = new FileInfo(somefile);
if (myFile.Exists)
{
MessageBox.Show("文件已经存在");
label1.Text = "创建时间:" + myFile.CreationTime.ToString();
label2.Text = "文件夹:" + myFile.Directory.ToString();
label3.Text = "文件夹名称:" + myFile.DirectoryName.ToString() + ",文件扩展名:" + myFile.Extension.ToString();
}
else
{
MessageBox.Show("文件不存在");
}
}
}
}
文件夹类Directory的常用方法
Directory类公开用于创建,移动和枚举通过目录和子目录的静态方法。无法继承此类。
方法 | 说明 |
---|---|
Move | 蒋文件或目录及其内容移动到新位置 |
Delete | 已重载。删除指定的目录 |
CreateDirectory | 已重载。创建指定路径中的所有目录 |
GetCreationTime | 获取目录的创建日期和时间 |
GetCurrentDirectory | 获取引用程序的当前工作目录 |
GetFiles | 已重载。返回指定目录中的文件的名称 |