使用File类操作文件
方法 | 说明 |
Copy | 将现有文件复制到新文件 |
Create | 在指定路径中创建文件 |
Delete | 删除指定的文件,如果指定的文件不存在,则不引发异常 |
Exists | 确定文件是否存在 |
Move | 将指定文件移动到新位置,并提供指定新文件名的选项。 |
Open | 打开指定路径上的FileStream |
应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{
string m_path = @"C:/Documents and Settings/张健和/桌面/Roy.txt";
File.Create(m_path); //文件类的静态方法,创建文件
if (File.Exists(m_path)) //验证文件是否存在的方法,返回布尔值。
{
Console.WriteLine("文件存在");
}
else Console.WriteLine("文件创建失败");
}
}
}
使用Directory类操作文件
方法 | 说明 |
CreateDirectory | 创建指定路径中的所有目录 |
Delete | 删除指定的目录 |
Exists | 确定指定路径是否引用磁盘上的现有目录(即是否存在) |
GetCurrentDirectory | 获取应用程序的当前工作目录 |
GetDirectories | 获取指定目录中的子目录名称 |
GetFiles | 返回指定目录中文件的名称 |
GetLogicalDrives | 检索此计算机上格式为“<驱动器号>:/”的逻辑驱动器的名称 |
GetParent | 检测指定路径的父目录,包括绝对路径和相对路径 |
Move | 将文件或目录及其内容移动到新位置 |
应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{
string m_path = @"C:/Documents and Settings/张健和/桌面/Roy";
Directory.CreateDirectory(m_path); //Directory.CreateDirectory的应用
if (Directory.Exists(m_path))
{
Console.WriteLine("文件夹生成成功");
}
else Console.WriteLine("文件夹创建失败");
Console.ReadLine();
Directory.Delete(m_path); //Directory.Delete的应用
if (Directory.Exists(m_path))
{
Console.WriteLine("文件夹删除失败");
}
else Console.WriteLine("文件夹删除成功");
Console.ReadLine();
string m_path2=Directory.GetCurrentDirectory();
Console.WriteLine("当前应用程序的目录为:"+m_path2);
Console.ReadLine();
string []m_path3=new string[100];
m_path3 = Directory.GetFiles(m_path2); //Directory.GetFiles的应用
foreach (string i in m_path3)
{
Console.WriteLine("当前应用程序的目录中的子文件为:" + i);
}
Console.ReadLine();
}
}
}
使用FileInfo类操作文件
文件信息类FileInfo与File类不同。它虽然也提供创建,复制,删除,移动和打开文件的方法,并且帮助创建FileStream对象,但是它提供的仅仅是实例方法。因此要使用FileInfo类,必须先实例化一个FileInfo对象。
方法 | 说明 |
Attributes | 获取或设置当前FileSystemInfo的FileAttributes |
CreationTime | 获取或设置当前FileSystemInfo对象的创建时间 |
Directory | 获取父目录的实例 |
DirectoryName | 获取表示目录的完整路径的字符串 |
Exists | 获取指示文件是否存在的值 |
Extension | 获取表示文件扩展名部分的字符串 |
FullName | 获取目录或文件的完整目录 |
IsReadOnly | 获取或设置当前文件是否为只读的值 |
Length | 获取当前文件的大小 |
Name | 获取文件名 |
应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{
string m_path = @"C:/Documents and Settings/张健和/桌面/Roy.txt";
if (!File.Exists(m_path))
{
File.Create(m_path);
}
FileInfo useFileInfo = new FileInfo(m_path);
string a = useFileInfo.Attributes.ToString();
string t = useFileInfo.CreationTime.ToString();
Console.WriteLine("文件的属性是:"+a+"/n创建时间是:"+t); //那个文件属性自己查下英语词典。。
Console.ReadLine();
string d = useFileInfo.Directory.ToString();
string dn = useFileInfo.DirectoryName.ToString();
string ex=useFileInfo.Extension.ToString();
string name = useFileInfo.Name.ToString();
Console.WriteLine("父目录是:" + d + "/n目录完整路径是:" + dn+"/n扩展名是:"+ex+"/n文件名是:"+name);
Console.ReadLine();
}
}
}
使用DirectoryInfo类操作文件夹
方法 | 说明 |
Attributes | 获取或设置当前FileSystemInfo的FileAttributes |
CreationTime | 获取或设置当前FileSystemInfo对象的创建时间 |
Exists | 获取指示目录是否存在的值 |
Extension | 获取表示文件扩展名部分的字符串 |
Name | 获取此DirectoryInfo实例的名称 |
Parent | 获取指定子目录的父目录 |
Root | 获取路径的根部分 |
应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{
string m_path = @"C:/Documents and Settings/张健和/桌面/Roy";
DirectoryInfo useDirectoryInfo = new DirectoryInfo(m_path); //用DirectoryInfo时记得要新建实例
if (useDirectoryInfo.Exists) //与Directory类不同,这里Exists不是方法
{
Console.WriteLine("文件夹存在");
}
else
{
Console.WriteLine("文件夹不存在,系统自动新建文件夹");
Directory.CreateDirectory(m_path);
}
string a = useDirectoryInfo.Attributes.ToString(); //文件夹类型
string ct = useDirectoryInfo.CreationTime.ToString(); //创建时间
string name = useDirectoryInfo.Name.ToString(); //文件名称
string P=useDirectoryInfo.Parent.ToString(); //文件的父目录
string R = useDirectoryInfo.Root.ToString(); //文件夹的根目录
Console.WriteLine(
"文件夹类型是:" + a
+ "/n创建时间是:" + ct
+ "/n文件夹名称是:" + name
+ "/n文件的父目录是:" + P
+ "/n文件夹的根目录是:" + R);
Console.ReadLine();
}
}
}
使用FileStream类读取和写入文件
FileStream类的构造函数简介
构造函数 | 说明 |
FileStream(String.FileMode) | 使用指定的路径和创建模式初始化FileStream类的新实例 |
FileStream(String.FileMode,FileAccess) | 使用指定的路径、创建模式和读/写权限初始化FileStream类的新实例 |
FileMode枚举成员简介
成员 | 说明 |
Append | 打开现有文件并查找到文件尾,或创建新文件。FileMode.Append只能同FileAccess一起使用,任何读尝试都会失败并引发<ArgumentException> |
Create | 指定操作系统应创建文件。如果文件存在,它将被改写。这要求<FileIOPermissionAccess.Write>,System.IO.FileMode.Create等效于这样的请求:如果文件不存在,则使用<CreateNew>;否则使用<Truncate>。 |
CreateNew | 指定操作系统应创建文件。此操作需要FileIOPermissionAccess.Write。如果文件已经存在,则将引发IOException |
Open | 指定操作系统应打开现有文件。打开文件的能力取决于FileAccess所指定的值。如果该文件不存在,则引发System.IO.FileNotFoundException。 |
OpenOrCreate | 如果文件存在,指定操作系统应打开文件,否则应创建文件。如果用FileAccess.Read打开文件,则需要<FileIOPermissionAccess.Read>。如果文件访问为FileAccess.Write或FileAccess.ReadWrite,则需要FileIOPermissionAccess.Write。如果文件访问为FileAccess.Append,则需要<FileIOPermissionAccess.Append>。 |
Truncate | 指定操作系统应打开现有文件。文件一旦打开,就将被截断为零字节大小。此操作需要FileIOPermissionAccess.Write。试图从使用Truncate打开的文件中进行读取将导致异常。 |
(由于本人不太推荐用FileStream类进行文件操作,因为比较影响效率,所以以下的应用实例不是太全面)
应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{byte[] m_bDateWrite = new byte[100];
char[] m_cDateWrite = new char[100];
string m_path = @"C:/Documents and Settings/张健和/桌面/Roy.txt";
try
{
//创建c:/的FileStream对象
FileStream m_FileStream = new FileStream(m_path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
m_cDateWrite = "My First File Operation".ToCharArray(); //将要写入的字符串转换成字符数组
//通过UTF-8编码方法将字符数组转换成字节数组(自己百度一下什么是UTF-8)
Encoder m_Enc = Encoding.UTF8.GetEncoder();//?
m_Enc.GetBytes(m_cDateWrite, 0, m_cDateWrite.Length, m_bDateWrite, 0, true);
m_FileStream.Seek(0, SeekOrigin.Begin); //设置流的当前位置为文件开始位置
m_FileStream.Write(m_bDateWrite, 0, m_bDateWrite.Length); //写入文件
}
catch (System.Exception ex)
{
Console.WriteLine("there is an ioException");
Console.WriteLine(ex.Message); //异常信息
Console.ReadLine(); return;
}
Console.WriteLine("write to File Succeed!");
Console.ReadLine();
return;
}
}
}
使用StreamWriter类写入文件
构造函数 | 说明 |
StreamWriter(Stream) | 用UTF-8编码及默认缓冲区大小,为指定的流初始化StreamWriter类的一个新实例 |
StreamWriter(String) | 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化StreamWriter类的新实例 |
StreamWriter(String,Boolean) | 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化StreamWriter类的新实例。如果文件存在,则可以将其必定或向其追加。如果不存在,则此构造函数将创建一个新文件 |
StreamWriter方法
方法 | 说明 |
Close | 关闭当前的StreamWriter对象和基础流 |
Write | 写入流 |
WriteLine | 写入重载参数指定的某些数据,后跟行结束符 |
应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{try
{
string m_path = @"C:/Documents and Settings/张健和/桌面/Roy.txt";
//保留文件现有数据,以追加写入的方式打开文件
StreamWriter sw = new StreamWriter(m_path, true);
sw.WriteLine("Another File Operation Method");
sw.Close();
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
return;
}
Console.WriteLine("Write to File Succeed!");
Console.ReadLine();
return;
}
}
}
使用StreamReader类读取文件
构造函数 | 说明 |
StreamReader(Stream) | 为指定的流初始化StreamReader类的新实例 |
StreamReader(String) | 为指定的文件名初始化StreamReader类的新实例 |
StreamReader方法
方法 | 说明 |
Close | 关闭StreamReader对象和基础流,并释放与读取器关联的所有资源 |
Read | 读取输入流中的下一个字符或下一个组字符 |
ReadLine | 从当前流中读取一行字符并将数据作为字符串返回 |
ReadToEnd | 从流当前位置到末尾读取流 |
使用方法和StreamWriter差不多,大家可以尝试尝试自己写一个DEMO。
使用BinaryWriter类进行二进制写入
构造函数 | 说明 |
BinaryWriter() | 初始化向流中写入BinaryWriter类的实例 |
BinaryWriter(Stream) | 基于所提供的流,用UTF-8作为字符串编码来初始化BinaryWriter类的新实例 |
BinaryWriter(Stream,Encoding) | 基于所提供的流和特定的字符编码,初始化BinaryWriter类的新实例 |
BinaryWriter方法
方法 | 说明 |
Close | 关闭当前的BinaryWriter对象和基础流 |
Write | 将值写入当前流 |
使用BinaryReader类进行二进制读取
构造函数 | 说明 |
BinaryReader(Stream) | 基于所提供的流,用UTF-8 Encoding初始化BinaryReader类的新实例 |
BinaryReader(Stream,Encoding) | 基于所提供的流和特定的字符编码,初始化BinaryReader类的新实例 |
BinaryReader方法
方法 | 说明 |
Close | 关闭当前阅读器及基础流 |
Read | 从基础流中读取字符,并提升流的当前位置 |
BinaryWriter和BinaryReader的应用实例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //记得添加对System.IO的引用。
namespace 文件类的应用
{
class Program
{
static void Main(string[] args)
{string m_path = @"C:/Documents and Settings/张健和/桌面/Roy.dat";
FileStream FS = new FileStream(m_path, FileMode.OpenOrCreate);
BinaryWriter BW = new BinaryWriter(FS); //通过文件流创建相应的二进制写入器
for (int i = 0; i < 11;i++ )
{
BW.Write(i);
}
BW.Close(); //先关闭
FS.Close();
Console.WriteLine("写入成功!");
Console.ReadLine();
FileStream FS1 = new FileStream(m_path, FileMode.Open, FileAccess.Read);
BinaryReader BR = new BinaryReader(FS1);
for (int i = 0; i < 11;i++ )
{
Console.WriteLine(BR.ReadInt32());
}
BR.Close();
FS.Close();
Console.ReadLine();
}
}
}