文件操作概览
趁有空,对.net的文件操作类做了一个大概的总结.
首先引用IO namespace:
using System.IO;
创建目录:
/// <summary>
/// Directory.CreateDirectory参数解释:
/// path
/// 要创建的目录。
/// directorySecurity
/// 要应用于此目录的访问控制。
///
/// 如果文件夹存在则不创建,可用Directory.Exists判断文件夹是否存在.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
try
{
DirectoryInfo di = Directory.CreateDirectory(@"C:\FileOperator");
string message = string.Format("Create \"{0}\" success!", di.FullName);
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Create folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// Directory.CreateDirectory参数解释:
/// path
/// 要创建的目录。
/// directorySecurity
/// 要应用于此目录的访问控制。
///
/// 如果文件夹存在则不创建,可用Directory.Exists判断文件夹是否存在.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
try
{
DirectoryInfo di = Directory.CreateDirectory(@"C:\FileOperator");
string message = string.Format("Create \"{0}\" success!", di.FullName);
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Create folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
创建文件:
/// <summary>
/// File.Create参数解释:
/// path
/// 类型:System..::.String
/// 文件名。
/// bufferSize
/// 类型:System..::.Int32
/// 用于读取和写入文件的已放入缓冲区的字节数。
/// options
/// 类型:System.IO..::.FileOptions
/// FileOptions 值之一,它描述如何创建或覆盖该文件。
/// fileSecurity
/// 类型:System.Security.AccessControl..::.FileSecurity
/// FileSecurity 值之一,它确定文件的访问控制和审核安全性。
/// 创建文件会覆盖原来同名文件,所以创建前最好File.Exists判断文件是否存在.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
try
{
FileStream fs = File.Create(@"C:\FileOperator\File1.txt");
string message = string.Format("Create \"{0}\" success!", fs.Name);
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
fs.Dispose();
fs.Close();
}
catch
{
MessageBox.Show("Create file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// File.Create参数解释:
/// path
/// 类型:System..::.String
/// 文件名。
/// bufferSize
/// 类型:System..::.Int32
/// 用于读取和写入文件的已放入缓冲区的字节数。
/// options
/// 类型:System.IO..::.FileOptions
/// FileOptions 值之一,它描述如何创建或覆盖该文件。
/// fileSecurity
/// 类型:System.Security.AccessControl..::.FileSecurity
/// FileSecurity 值之一,它确定文件的访问控制和审核安全性。
/// 创建文件会覆盖原来同名文件,所以创建前最好File.Exists判断文件是否存在.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
try
{
FileStream fs = File.Create(@"C:\FileOperator\File1.txt");
string message = string.Format("Create \"{0}\" success!", fs.Name);
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
fs.Dispose();
fs.Close();
}
catch
{
MessageBox.Show("Create file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
打开和写入文件:
/// <summary>
/// File.Open参数解释:
/// path
/// 类型:System..::.String
/// 要打开的文件。
/// mode
/// 类型:System.IO..::.FileMode
/// FileMode 值,用于指定在文件不存在时是否创建该文件,并确定是保留还是覆盖现有文件的内容。
/// access
/// 类型:System.IO..::.FileAccess
/// FileAccess 值,指定可以对文件执行的操作。
/// share
/// 类型:System.IO..::.FileShare
/// FileShare 值,它指定其他线程所具有的对该文件的访问类型。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
try
{
FileStream fs = File.Open(@"C:\FileOperator\File1.txt", FileMode.Append);
byte[] byteArray = new byte[] { (byte)'K', (byte)'E', (byte)'N' };
fs.Write(byteArray, 0, byteArray.Length);
string message = string.Format("Write \"KEN\" to File success!", fs.Name);
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
fs.Dispose();
fs.Close();
}
catch
{
MessageBox.Show("Open & Write file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// File.Open参数解释:
/// path
/// 类型:System..::.String
/// 要打开的文件。
/// mode
/// 类型:System.IO..::.FileMode
/// FileMode 值,用于指定在文件不存在时是否创建该文件,并确定是保留还是覆盖现有文件的内容。
/// access
/// 类型:System.IO..::.FileAccess
/// FileAccess 值,指定可以对文件执行的操作。
/// share
/// 类型:System.IO..::.FileShare
/// FileShare 值,它指定其他线程所具有的对该文件的访问类型。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
try
{
FileStream fs = File.Open(@"C:\FileOperator\File1.txt", FileMode.Append);
byte[] byteArray = new byte[] { (byte)'K', (byte)'E', (byte)'N' };
fs.Write(byteArray, 0, byteArray.Length);
string message = string.Format("Write \"KEN\" to File success!", fs.Name);
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
fs.Dispose();
fs.Close();
}
catch
{
MessageBox.Show("Open & Write file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
文件复制:
/// <summary>
/// File.Copy参数解释:
/// sourceFileName: 源文件
/// destFileName: 目标文件
/// overwrite: 如果目标已存在,是否覆盖目标文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
try
{
DirectoryInfo di = Directory.CreateDirectory(@"C:\FileOperator\Temp");
File.Copy(@"C:\FileOperator\File1.txt", @"C:\FileOperator\Temp\File1.txt", true);
string message = string.Format("Copy File to \"{0}\" success!", @"C:\FileOperator\Temp\File1.txt");
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Copy file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// File.Copy参数解释:
/// sourceFileName: 源文件
/// destFileName: 目标文件
/// overwrite: 如果目标已存在,是否覆盖目标文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
try
{
DirectoryInfo di = Directory.CreateDirectory(@"C:\FileOperator\Temp");
File.Copy(@"C:\FileOperator\File1.txt", @"C:\FileOperator\Temp\File1.txt", true);
string message = string.Format("Copy File to \"{0}\" success!", @"C:\FileOperator\Temp\File1.txt");
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Copy file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
文件删除:
/// <summary>
/// File.Delete参数解释:
/// path: 文件完整路径;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
try
{
File.Delete(@"C:\FileOperator\Temp\File1.txt");
string message = "Delete File success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Delete file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// File.Delete参数解释:
/// path: 文件完整路径;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
try
{
File.Delete(@"C:\FileOperator\Temp\File1.txt");
string message = "Delete File success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Delete file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
移动和重命名:
/// <summary>
/// File.Move参数解释:
/// sourceFileName: 源文件
/// destFileName: 目标文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button6_Click(object sender, EventArgs e)
{
try
{
//move
File.Move(@"C:\FileOperator\File1.txt", @"C:\FileOperator\Temp\File1.txt");
//rename
File.Move(@"C:\FileOperator\Temp\File1.txt", @"C:\FileOperator\Temp\File2.txt");
string message = "Move & Rename file success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Move & Rename file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//文件夹的Move和Rename同文件一样,也使用File.Move,传入文件路径即可.
}
/// File.Move参数解释:
/// sourceFileName: 源文件
/// destFileName: 目标文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button6_Click(object sender, EventArgs e)
{
try
{
//move
File.Move(@"C:\FileOperator\File1.txt", @"C:\FileOperator\Temp\File1.txt");
//rename
File.Move(@"C:\FileOperator\Temp\File1.txt", @"C:\FileOperator\Temp\File2.txt");
string message = "Move & Rename file success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Move & Rename file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//文件夹的Move和Rename同文件一样,也使用File.Move,传入文件路径即可.
}
设置文件属性:
/// <summary>
/// File.SetAttributes参数解释:
/// path: 文件完整路径;
/// fileAttributes: FileAttributes值,指定文件属性.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button7_Click(object sender, EventArgs e)
{
try
{
File.SetAttributes(@"C:\FileOperator\Temp\File2.txt", FileAttributes.ReadOnly | FileAttributes.Hidden);
string message = "Set file Readonly & Hidden success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Set file attributes Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// File.SetAttributes参数解释:
/// path: 文件完整路径;
/// fileAttributes: FileAttributes值,指定文件属性.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button7_Click(object sender, EventArgs e)
{
try
{
File.SetAttributes(@"C:\FileOperator\Temp\File2.txt", FileAttributes.ReadOnly | FileAttributes.Hidden);
string message = "Set file Readonly & Hidden success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Set file attributes Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
检查文件和目录是否存在:
/// <summary>
/// 参数解释:
/// path:文件路径
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button8_Click(object sender, EventArgs e)
{
try
{
if (Directory.Exists(@"C:\FileOperator\Temp"))
MessageBox.Show(string.Format("\"{0}\"Exits!", @"C:\FileOperator\Temp\"), "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (File.Exists(@"C:\FileOperator\Temp\File2.txt"))
MessageBox.Show(string.Format("\"{0}\"Exits!", @"C:\FileOperator\Temp\File2.txt"), "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Check Folder & File Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// 参数解释:
/// path:文件路径
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button8_Click(object sender, EventArgs e)
{
try
{
if (Directory.Exists(@"C:\FileOperator\Temp"))
MessageBox.Show(string.Format("\"{0}\"Exits!", @"C:\FileOperator\Temp\"), "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (File.Exists(@"C:\FileOperator\Temp\File2.txt"))
MessageBox.Show(string.Format("\"{0}\"Exits!", @"C:\FileOperator\Temp\File2.txt"), "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Check Folder & File Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
设置目录属性:
/// <summary>
/// 不用解释
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button9_Click(object sender, EventArgs e)
{
try
{
DirectoryInfo di = new DirectoryInfo(@"C:\FileOperator\Temp");
di.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden;
string message = "Set folder attributes success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Set folder attributes Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// 不用解释
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button9_Click(object sender, EventArgs e)
{
try
{
DirectoryInfo di = new DirectoryInfo(@"C:\FileOperator\Temp");
di.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden;
string message = "Set folder attributes success!";
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Set folder attributes Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
获取子目录:
/// <summary>
/// 懒得解释
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button10_Click(object sender, EventArgs e)
{
try
{
string[] children = Directory.GetDirectories(@"C:\FileOperator");
string message = string.Empty;
if (children.Length > 0)
message = string.Format("{0} folders in \"{1}\"", children.Length, @"C:\FileOperator");
else
message = string.Format("No folder in \"{0}\"", @"C:\FileOperator");
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Get child folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// 懒得解释
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button10_Click(object sender, EventArgs e)
{
try
{
string[] children = Directory.GetDirectories(@"C:\FileOperator");
string message = string.Empty;
if (children.Length > 0)
message = string.Format("{0} folders in \"{1}\"", children.Length, @"C:\FileOperator");
else
message = string.Format("No folder in \"{0}\"", @"C:\FileOperator");
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Get child folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
获取目录下所有文件:
/// <summary>
/// 呵呵
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button11_Click(object sender, EventArgs e)
{
try
{
string[] files = Directory.GetFiles(@"C:\FileOperator");
string message = string.Empty;
if (files.Length > 0)
message = string.Format("{0} files in \"{1}\"", files.Length, @"C:\FileOperator");
else
message = string.Format("No file in \"{0}\"", @"C:\FileOperator");
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Get files Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// 呵呵
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button11_Click(object sender, EventArgs e)
{
try
{
string[] files = Directory.GetFiles(@"C:\FileOperator");
string message = string.Empty;
if (files.Length > 0)
message = string.Format("{0} files in \"{1}\"", files.Length, @"C:\FileOperator");
else
message = string.Format("No file in \"{0}\"", @"C:\FileOperator");
MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Get files Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
删除目录:
/// <summary>
/// 参数解释:
/// path:
/// recursive:是否递归删除目录下所有目录及文件.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button12_Click(object sender, EventArgs e)
{
try
{
//正常文件才可以删除
DirectoryInfo di = new DirectoryInfo(@"C:\FileOperator\Temp");
di.Attributes = FileAttributes.Normal;
File.SetAttributes(@"C:\FileOperator\Temp\File2.txt", FileAttributes.Normal);
//delete
Directory.Delete(@"C:\FileOperator", true);
MessageBox.Show("Delete folder success!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Delete folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// 参数解释:
/// path:
/// recursive:是否递归删除目录下所有目录及文件.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button12_Click(object sender, EventArgs e)
{
try
{
//正常文件才可以删除
DirectoryInfo di = new DirectoryInfo(@"C:\FileOperator\Temp");
di.Attributes = FileAttributes.Normal;
File.SetAttributes(@"C:\FileOperator\Temp\File2.txt", FileAttributes.Normal);
//delete
Directory.Delete(@"C:\FileOperator", true);
MessageBox.Show("Delete folder success!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("Delete folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
另外,.Net对txt文件提供了更友好的操作封装,具体请查看MSDN,path参数可以用绝对路径,也可以使用相对路径,个人推荐使用绝对路径.
全部操作源代码,请点击 源代码 下载.