以字节形式向磁盘写入数据通常称为字节流(比特流)
常常使用System.Io
常用的类
类 |
说明 |
File |
提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。 |
FileInfo |
提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。无法继承此类。 |
FileStream |
公开以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。 |
BinaryReader |
用特定的编码将基元数据类型读作二进制值。 |
BinaryWriter |
以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。 |
BufferedStream |
给另一流上的读写操作添加一个缓冲层。无法继承此类。 |
Directory |
公开用于创建、移动和枚举通过目录和子目录的静态方法。无法继承此类。 |
DirectoryInfo |
公开用于创建、移动和枚举目录和子目录的实例方法。无法继承此类。 |
Path |
对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。 |
StreamReader |
实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。 |
StreamWriter |
实现一个 TextWriter,使其以一种特定的编码向流中写入字符。 |
FileSysWatcher |
侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。 |
基本使用类的介绍
1.1File
常用方法
类File提供用于创建、复制、删除、移动和打开文件的静态方法
方法 |
说明 |
Move |
将指定文件移到新位置,并提供指定新文件名的选项。 |
Delete |
删除指定的文件。如果指定的文件不存在,则不引发异常。 |
Copy |
已重载。 将现有文件复制到新文件。 |
CreateText |
创建或打开一个文件用于写入 UTF-8 编码的文本。 |
OpenText |
打开现有 UTF-8 编码文本文件以进行读取。 |
Open |
已重载。 打开指定路径上的 FileStream。 |
eg
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\123.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());
}
}
}
File 使用
1.2FileInfo
类FileInfo提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。无法继承此类
属性 |
说明 |
Attributes |
获取或设置当前 FileSystemInfo 的 FileAttributes。(从 FileSystemInfo 继承。) |
CreationTime |
获取或设置当前 FileSystemInfo 对象的创建时间。(从 FileSystemInfo 继承。) |
Directory |
获取父目录的实例。 |
DirectoryName |
获取表示目录的完整路径的字符串。 |
Exists |
已重写。获取指示文件是否存在的值。 |
Extension |
获取表示文件扩展名部分的字符串。(从 FileSystemInfo 继承。) |
获取目录名
using System;
using System.IO;
class Test
{
public static void Main()
{
string fileName = "C:\\autoexec.bat";
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
{
return;
}
Console.WriteLine("{0} has a directoryName of {1}",fileName,fileInfo.DirectoryName);
/* 下面是代码的处理结果,
* 实际的结果因机器不同:
*
* C:\autoexec.bat has a directoryName of C:\
*/
}
}
代码
同磁盘下文件复制问题:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace FileOptionApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 复制文本文件
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
string somefile = @"C:\Documents and Settings\Administrator\My Documents\SQL Server2000安装故障.txt";
string target = @"c:\2.txt";
if (!File.Exists(somefile))
{
MessageBox.Show("文件不存在!");
}
else
{
if (File.Exists(target))
{
File.Delete(target);
}
File.Copy(somefile, target);
MessageBox.Show("文件复制成功!");
}
}
/// <summary>
/// 创建文本文件
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
string target = @"c:\2.txt";
if (File.Exists(target))
{
File.Delete(target);
}
File.CreateText(target);
}
/// <summary>
/// 删除文本文件
/// </summary>
private void button3_Click(object sender, EventArgs e)
{
string target = @"c:\2.txt";
if (File.Exists(target))
{
File.Delete(target);
MessageBox.Show("文件删除成功!");
}
}
}
}
------------------通过FileInfo类执行同样的复制
private void button1_Click(object sender, EventArgs e)
{
string path = @"C:\WINDOWS\IE4 Error Log.txt";
string target = @"c:\1.txt";
FileInfo myfile = new FileInfo(path);
if (!myfile.Exists)
{
MessageBox.Show("对不起,未发现路径文件!");
}
else
{
myfile.CopyTo(target);
MessageBox.Show("复制成功!");
}
}
code
获取文件的基本信息
向一个Form窗体上拖拽三个Lable控件和一个Button控件,Button控件的text属性设置为“获取文件信息”
代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace FileOptionApplication
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
/// <summary>
/// 获取文件信息单击事件
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
string somefile = @"C:\Documents and Settings\Administrator\My Documents\SQL Server2000安装故障.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("文件并不存在");
}
}
}
}
代码
1.3 Directory公开用于创建、移动和枚举通过目录和子目录的静态方法
常用的方法
方法 |
说明 |
Move |
将文件或目录及其内容移到新位置。 |
Delete |
已重载。 删除指定的目录。 |
CreateDirectory |
已重载。 创建指定路径中的所有目录 |
GetCreationTime |
获取目录的创建日期和时间。 |
GetCurrentDirectory |
获取应用程序的当前工作目录。 |
GetFiles |
已重载。 返回指定目录中的文件的名称 |
目录创建了多少天
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
// 获取当前目录的创建时间.
DateTime dt = Directory.GetCreationTime(Environment.CurrentDirectory);
// 给用户反馈信息.
if (DateTime.Now.Subtract(dt).TotalDays > 364)
{
Console.WriteLine("This directory is over a year old.");
}
else if (DateTime.Now.Subtract(dt).TotalDays > 30)
{
Console.WriteLine("This directory is over a month old.");
}
else if (DateTime.Now.Subtract(dt).TotalDays <= 1)
{
Console.WriteLine("This directory is less than a day old.");
}
else
{
Console.WriteLine("This directory was created on {0}", dt);
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
c_code
目录的相关操作
向一个Form窗体上拖拽五个Button控件,Button控件的text属性设置为“创建目录”、“删除目录”、“移动目录”、“目录创建时间”、“返回指定目录文件”
在类Form3里添加二个静态字段directory_path、directory_otherpath,都为string类型,分别代表工作目录路径和其他目录路径;双击“创建目录”、“删除目录”、“移动目录”、“目录创建时间”、“返回指定目录文件”
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace FileOptionApplication
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private static string directory_path = "c:\\qs250";
private static string directory_otherpath = "c:\\qqqq";
/// <summary>
/// 删除目录鼠标单击事件
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
try
{
Directory.CreateDirectory(directory_path);
button2.Enabled = true;
button1.Enabled = false;
button3.Enabled = true;
button4.Enabled = true;
button5.Enabled = true;
MessageBox.Show("文件夹成功建立。", "警报");
}
catch (Exception mm)
{
MessageBox.Show("磁盘操作错误,原因:" + Convert.ToString(mm), "警报");
}
}
/// <summary>
/// 删除目录鼠标单击事件
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
try
{
Directory.Delete(directory_path);
button2.Enabled = false;
button1.Enabled = true;
button3.Enabled = false;
button4.Enabled = false;
button5.Enabled = false;
MessageBox.Show("文件夹删除建立。", "警报");
}
catch (Exception mm)
{
MessageBox.Show("磁盘操作错误,原因:" + Convert.ToString(mm), "警报");
}
}
/// <summary>
/// 移动目录鼠标单击事件
/// </summary>
private void button3_Click(object sender, EventArgs e)
{
try
{
Directory.Move(directory_path, directory_otherpath);
MessageBox.Show("文件夹移动成功。", "警报");
//举例来讲,如果您尝试将c:\mydir 移到c:\public,并且c:\public 已存在,
//则此方法引发IOException。您必须将“c:\\public\\mydir”指定为destDirName 参数,或者指定新目录名,例如“c:\\newdir”。
}
catch (Exception mm)
{
MessageBox.Show("磁盘操作错误,原因:" + Convert.ToString(mm), "警报");
}
}
/// <summary>
/// 目录创建时间鼠标单击事件
/// </summary>
private void button4_Click(object sender, EventArgs e)
{
try
{
MessageBox.Show(string.Format("{0:G}",Directory.GetCreationTime(directory_path)), "提示");
//获取时间格式参见DateTimeFormatInfo
}
catch (Exception mm)
{
MessageBox.Show("磁盘操作错误,原因:" + Convert.ToString(mm), "警报");
}
}
/// <summary>
/// 返回指定目录文件鼠标单击事件
/// </summary>
private void button5_Click(object sender, EventArgs e)
{
try
{
string[] fileEntries = Directory.GetFiles(directory_path);
if (fileEntries.Length != 0)
{
foreach (string s in fileEntries)
{
if (File.Exists(s))
{
MessageBox.Show("内有文件信息:" + s, "提示");
}
}
}
else
{
MessageBox.Show("空文件夹", "提示");
}
//获取时间格式参见DateTimeFormatInfo
}
catch (Exception mm)
{
MessageBox.Show("磁盘操作错误,原因:" + Convert.ToString(mm), "警报");
}
}
}
}
文件夹的相关操作
1.4 file类读取文本文件的方法
方法 |
说明 |
CreateText(string FilePath) |
创建或打开一个文件用于写入 UTF-8 编码的文本。 |
OpenText(string FilePath) |
打开现有 UTF-8 编码文本文件以进行读取。 |
Open(string FilePath, FileMode) |