编码实现>文件和输入输出>文件操作>System.IO类介绍
System.IO命名空间有重要的7个类。
·Directory:操作目录的静态方法
·DirectoryInfo:操作目录的实例方法
·DriverInfo:访问驱动器,以及驱动器详细的实例方法
·File:对文件进行操作的静态方法
·FileInfo:对文件惊喜操作的实例方法
·Path:以跨平台的方式处理目录字符串的方法和属性
编码实现>文件和输入输出>文件操作>File类通过文件的创建和打开
File类通过文件的创建和打开
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace CreateAndOpen
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileCreateOpenDemo.txt";
//使用using,在语句执行完后自动释放资源。
//使用Create方法创建文件。
using (FileStream fs = File.Create(FilePath))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("这是使用Create创建文件的方法");
sw.Flush();
}
}
if (File.Exists(FilePath))
{
File.Delete(FilePath);
}
using (StreamWriter sw = File.CreateText(FilePath))
{
sw.WriteLine("这是使用CreateText方法创建文本文件的方法");
sw.Flush();
}
Console.WriteLine("使用Open方法打开文件");
using (FileStream fs = File.Open(FilePath, FileMode.Open))
{
using (StreamReader sr = new StreamReader(fs))
{
Console.WriteLine(sr.ReadToEnd());
}
}
Console.WriteLine("使用OpenRead方法打开文件");
using (FileStream fs = File.OpenRead(FilePath))
{
using (StreamReader sr = new StreamReader(fs))
{
Console.WriteLine(sr.ReadToEnd());
}
}
Console.WriteLine("使用OpenWrite方法打开文件");
using (FileStream fs = File.OpenWrite(FilePath))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("使用OpenWrite方法写入文件");
sw.Flush();
}
}
Console.WriteLine("使用OpenText方法打开文本文件");
using(StreamReader sr=File.OpenText(FilePath))
{
Console.WriteLine(sr.ReadToEnd());
}
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace CreateAndOpen
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileCreateOpenDemo.txt";
//使用using,在语句执行完后自动释放资源。
//使用Create方法创建文件。
using (FileStream fs = File.Create(FilePath))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("这是使用Create创建文件的方法");
sw.Flush();
}
}
if (File.Exists(FilePath))
{
File.Delete(FilePath);
}
using (StreamWriter sw = File.CreateText(FilePath))
{
sw.WriteLine("这是使用CreateText方法创建文本文件的方法");
sw.Flush();
}
Console.WriteLine("使用Open方法打开文件");
using (FileStream fs = File.Open(FilePath, FileMode.Open))
{
using (StreamReader sr = new StreamReader(fs))
{
Console.WriteLine(sr.ReadToEnd());
}
}
Console.WriteLine("使用OpenRead方法打开文件");
using (FileStream fs = File.OpenRead(FilePath))
{
using (StreamReader sr = new StreamReader(fs))
{
Console.WriteLine(sr.ReadToEnd());
}
}
Console.WriteLine("使用OpenWrite方法打开文件");
using (FileStream fs = File.OpenWrite(FilePath))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine("使用OpenWrite方法写入文件");
sw.Flush();
}
}
Console.WriteLine("使用OpenText方法打开文本文件");
using(StreamReader sr=File.OpenText(FilePath))
{
Console.WriteLine(sr.ReadToEnd());
}
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件操作>文件的追加
描述:将指定的字符串追加到文件的结尾。
AppendAllText方法
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileDemo1
{
class Program
{
static void Main(string[] args)
{
const string FilePath=@"C:\FileDemo1.txt";
if (File.Exists(FilePath))
{
Console.WriteLine("文件存在");
}
else
{
Console.WriteLine("文件不存在");
}
File.AppendAllText(FilePath, "这是使用File类的AppendAllText方法添加字符串!"+Environment.NewLine);
File.AppendAllText(FilePath, "这是使用File类的AppendAllText方法添加字符串,并指定编码格式为UTF-8", Encoding.UTF8);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileDemo1
{
class Program
{
static void Main(string[] args)
{
const string FilePath=@"C:\FileDemo1.txt";
if (File.Exists(FilePath))
{
Console.WriteLine("文件存在");
}
else
{
Console.WriteLine("文件不存在");
}
File.AppendAllText(FilePath, "这是使用File类的AppendAllText方法添加字符串!"+Environment.NewLine);
File.AppendAllText(FilePath, "这是使用File类的AppendAllText方法添加字符串,并指定编码格式为UTF-8", Encoding.UTF8);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件操作>判断一个文件是否存在
Exists方法
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileDemo1
{
class Program
{
static void Main(string[] args)
{
const string FilePath=@"C:\FileDemo1.txt";
if (File.Exists(FilePath))
{
Console.WriteLine("文件存在");
}
else
{
Console.WriteLine("文件不存在");
}
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace FileDemo1
{
class Program
{
static void Main(string[] args)
{
const string FilePath=@"C:\FileDemo1.txt";
if (File.Exists(FilePath))
{
Console.WriteLine("文件存在");
}
else
{
Console.WriteLine("文件不存在");
}
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件操作>文件的写入
描述,将指定的字符串直接写入文件,WriteAllText会清除现存文件中已有的文本,写入新文本,而AppendAllText则是在现场文件中的尾部添加文本。
WriteAllText
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WriteAllText
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileDemo1.txt";
File.WriteAllText(FilePath, "这是使用File类的WriteAllText方法添加字符串!" + Environment.NewLine);
File.WriteAllText(FilePath, "这是使用File类的WriteAllText方法添加字符串,并指定编码格式为UTF-8", Encoding.UTF8);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WriteAllText
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileDemo1.txt";
File.WriteAllText(FilePath, "这是使用File类的WriteAllText方法添加字符串!" + Environment.NewLine);
File.WriteAllText(FilePath, "这是使用File类的WriteAllText方法添加字符串,并指定编码格式为UTF-8", Encoding.UTF8);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
类似的文件写入的方法
WriteAllLines和WriteAllBytes方法
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WriteAllLinesAndWriteAllBytes
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileDemo1.txt";
string[] strs ={ "这是", "使用", "WriteAllLines", "方法", "添加", "字符串" };
File.WriteAllLines(FilePath, strs);
File.WriteAllLines(FilePath, strs, Encoding.UTF8);
string bytestr= "这是使用WriteAllBytes方法添加字节数组";
byte[] bytes = Encoding.UTF8.GetBytes(bytestr.ToCharArray());
File.WriteAllBytes(FilePath, bytes);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WriteAllLinesAndWriteAllBytes
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileDemo1.txt";
string[] strs ={ "这是", "使用", "WriteAllLines", "方法", "添加", "字符串" };
File.WriteAllLines(FilePath, strs);
File.WriteAllLines(FilePath, strs, Encoding.UTF8);
string bytestr= "这是使用WriteAllBytes方法添加字节数组";
byte[] bytes = Encoding.UTF8.GetBytes(bytestr.ToCharArray());
File.WriteAllBytes(FilePath, bytes);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件操作>文件的读取
ReadAllBytes方法
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WriteAllLinesAndWriteAllBytes
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileDemo1.txt";
string[] strs ={ "这是", "使用", "WriteAllLines", "方法", "添加", "字符串" };
File.WriteAllLines(FilePath, strs);
string[] str2 = File.ReadAllLines(FilePath);
string bytestr= "这是使用WriteAllBytes方法添加字节数组";
byte[] bytes = Encoding.UTF8.GetBytes(bytestr.ToCharArray());
File.WriteAllBytes(FilePath, bytes);
byte[] bytes2 = File.ReadAllBytes(FilePath);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WriteAllLinesAndWriteAllBytes
{
class Program
{
static void Main(string[] args)
{
const string FilePath = @"C:\FileDemo1.txt";
string[] strs ={ "这是", "使用", "WriteAllLines", "方法", "添加", "字符串" };
File.WriteAllLines(FilePath, strs);
string[] str2 = File.ReadAllLines(FilePath);
string bytestr= "这是使用WriteAllBytes方法添加字节数组";
byte[] bytes = Encoding.UTF8.GetBytes(bytestr.ToCharArray());
File.WriteAllBytes(FilePath, bytes);
byte[] bytes2 = File.ReadAllBytes(FilePath);
string str = File.ReadAllText(FilePath);
Console.WriteLine(str);
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件操作>文件的复制,删除,移动
File类没有提供对文件进行重命名的方法,可以通过对Move的操作来变通实现。
文件的复制,删除,移动
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace CopyDeleteAndMoveFile
{
class Program
{
static void Main(string[] args)
{
const string SourceFilePath = @"C:\FileDemo1.txt";
const string DestFilePath=@"C:\FileDemoCopy1.txt";
if (!File.Exists(SourceFilePath))
{
File.WriteAllText(SourceFilePath,"这是一个示范文件的复制,移动,删除的例子");
}
Console.WriteLine("文件的复制操作");
File.Copy(SourceFilePath, DestFilePath, true);
Console.WriteLine("文件的删除操作");
File.Delete(DestFilePath);
Console.WriteLine("文件的移动操作");
File.Move(SourceFilePath, DestFilePath);
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace CopyDeleteAndMoveFile
{
class Program
{
static void Main(string[] args)
{
const string SourceFilePath = @"C:\FileDemo1.txt";
const string DestFilePath=@"C:\FileDemoCopy1.txt";
if (!File.Exists(SourceFilePath))
{
File.WriteAllText(SourceFilePath,"这是一个示范文件的复制,移动,删除的例子");
}
Console.WriteLine("文件的复制操作");
File.Copy(SourceFilePath, DestFilePath, true);
Console.WriteLine("文件的删除操作");
File.Delete(DestFilePath);
Console.WriteLine("文件的移动操作");
File.Move(SourceFilePath, DestFilePath);
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>目录操作类Directory>目录的创建
代码
//指定路径名创建文件夹
public static DirectoryInfo CreateDirectory(string path);
//指定路径名,且指定Windows安全性
public static DirectoryInfo CreateDirectory(string path,DirectorySecurity directorySecurity);
public static DirectoryInfo CreateDirectory(string path);
//指定路径名,且指定Windows安全性
public static DirectoryInfo CreateDirectory(string path,DirectorySecurity directorySecurity);
编码实现>文件和输入输出>目录操作类Directory>目录的移动和删除
目录的移动和删除
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace DirectoryDemo1
{
class Program
{
static void Main(string[] args)
{
const string sourceFolderPath = @"C:\Directorydemo";
const string destFolderPath = @"C:\DirectorydemoDest";
if (!Directory.Exists(sourceFolderPath))
{
//创建指定路径的目录
DirectoryInfo di = Directory.CreateDirectory(sourceFolderPath);
}
if (Directory.Exists(destFolderPath))
{
//删除指定目录,这目录必须是空目录。后面的true表示递归删除目录下的目录
Directory.Delete(destFolderPath,true);
}
//从源文件夹转到目标文件夹
Directory.Move(sourceFolderPath, destFolderPath);
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace DirectoryDemo1
{
class Program
{
static void Main(string[] args)
{
const string sourceFolderPath = @"C:\Directorydemo";
const string destFolderPath = @"C:\DirectorydemoDest";
if (!Directory.Exists(sourceFolderPath))
{
//创建指定路径的目录
DirectoryInfo di = Directory.CreateDirectory(sourceFolderPath);
}
if (Directory.Exists(destFolderPath))
{
//删除指定目录,这目录必须是空目录。后面的true表示递归删除目录下的目录
Directory.Delete(destFolderPath,true);
}
//从源文件夹转到目标文件夹
Directory.Move(sourceFolderPath, destFolderPath);
}
}
}
编码实现>文件和输入输出>目录操作类Directory>获取目录的位置
获取目录的位置
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetDirectories
{
class Program
{
static void Main(string[] args)
{
const string FolderPath = @"C:\dell\drivers";
//获取当前工作目录。
Console.WriteLine("当前的工作目录为{0}", Directory.GetCurrentDirectory());
//获取以R字符开头的顶层目录,可以指定SearchOption枚举来获取所有的子目录。
string[] strs = Directory.GetDirectories(FolderPath, "R*", SearchOption.TopDirectoryOnly);
foreach (string str in strs)
{
Console.WriteLine( str);
}
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetDirectories
{
class Program
{
static void Main(string[] args)
{
const string FolderPath = @"C:\dell\drivers";
//获取当前工作目录。
Console.WriteLine("当前的工作目录为{0}", Directory.GetCurrentDirectory());
//获取以R字符开头的顶层目录,可以指定SearchOption枚举来获取所有的子目录。
string[] strs = Directory.GetDirectories(FolderPath, "R*", SearchOption.TopDirectoryOnly);
foreach (string str in strs)
{
Console.WriteLine( str);
}
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>目录操作类Directory>获取目录中的文件列表
获取目录中的文件列表
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetFiles
{
class Program
{
static void Main(string[] args)
{
const string FolderPath = @"C:\dell\drivers";
//获取C:\dell\drivers下的所有文件名,包括子目录。
string[] strs = Directory.GetFiles(FolderPath, "*", SearchOption.AllDirectories);
foreach (string str in strs)
{
Console.WriteLine(str);
}
//获取c:\dell\drivers下的所有文件名,目录名。
string[] fileAndDirectorys = Directory.GetFileSystemEntries(FolderPath);
foreach (string str in fileAndDirectorys)
{
Console.WriteLine(str);
}
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetFiles
{
class Program
{
static void Main(string[] args)
{
const string FolderPath = @"C:\dell\drivers";
//获取C:\dell\drivers下的所有文件名,包括子目录。
string[] strs = Directory.GetFiles(FolderPath, "*", SearchOption.AllDirectories);
foreach (string str in strs)
{
Console.WriteLine(str);
}
//获取c:\dell\drivers下的所有文件名,目录名。
string[] fileAndDirectorys = Directory.GetFileSystemEntries(FolderPath);
foreach (string str in fileAndDirectorys)
{
Console.WriteLine(str);
}
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件夹信息类DirectoryInfo>目录的创建,移动,删除,获取目录信息
DirectoryInfo>目录的创建,移动,删除,获取目录信息
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace DirectoryInfoDemo
{
class Program
{
static void Main(string[] args)
{
const string sourcePath = @"C:\DirectoryInfoDemo";
const string destPath = @"C:\DirectoryInfoDemo2";
//使用目录构造DirectoryInfo。
DirectoryInfo di = new DirectoryInfo(sourcePath);
if (!di.Exists)
{
di.Create();
}
//创建子目录SubDirectory
di.CreateSubdirectory("SubDirectory");
Console.WriteLine("{0}的信息为:", di.FullName);
Console.WriteLine("父目录:{0}", di.Parent.FullName);
Console.WriteLine("根目录:{0}", di.Root.FullName);
Console.WriteLine("属性:{0}", di.Attributes.ToString());
Console.WriteLine("建立时间:{0}", di.CreationTime.ToString());
Console.WriteLine("最后一次访问时间{0}", di.LastAccessTime.ToString());
Console.WriteLine("最后一次写入时间{0}", di.LastWriteTime.ToString());
Console.WriteLine("文件夹己经被移动!");
if (Directory.Exists(destPath))
{
Directory.Delete(destPath,true);
}
//移动文件夹
di.MoveTo(destPath);
Console.WriteLine("文件夹己经被删除!");
//删除文件夹
if (Directory.Exists(di.FullName + @"\SubDirectory"))
{
Directory.Delete(di.FullName + @"\SubDirectory",true);
}
di.Delete();
Console.ReadLine();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace DirectoryInfoDemo
{
class Program
{
static void Main(string[] args)
{
const string sourcePath = @"C:\DirectoryInfoDemo";
const string destPath = @"C:\DirectoryInfoDemo2";
//使用目录构造DirectoryInfo。
DirectoryInfo di = new DirectoryInfo(sourcePath);
if (!di.Exists)
{
di.Create();
}
//创建子目录SubDirectory
di.CreateSubdirectory("SubDirectory");
Console.WriteLine("{0}的信息为:", di.FullName);
Console.WriteLine("父目录:{0}", di.Parent.FullName);
Console.WriteLine("根目录:{0}", di.Root.FullName);
Console.WriteLine("属性:{0}", di.Attributes.ToString());
Console.WriteLine("建立时间:{0}", di.CreationTime.ToString());
Console.WriteLine("最后一次访问时间{0}", di.LastAccessTime.ToString());
Console.WriteLine("最后一次写入时间{0}", di.LastWriteTime.ToString());
Console.WriteLine("文件夹己经被移动!");
if (Directory.Exists(destPath))
{
Directory.Delete(destPath,true);
}
//移动文件夹
di.MoveTo(destPath);
Console.WriteLine("文件夹己经被删除!");
//删除文件夹
if (Directory.Exists(di.FullName + @"\SubDirectory"))
{
Directory.Delete(di.FullName + @"\SubDirectory",true);
}
di.Delete();
Console.ReadLine();
}
}
}
编码实现>文件和输入输出>文件夹信息类DirectoryInfo>获取文件,子目录的位置
DirectoryInfo>获取文件,子目录的位置
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetFilesAndDirectories
{
class Program
{
static void Main(string[] args)
{
const string windowsPath = @"C:\WINDOWS";
DirectoryInfo di = new DirectoryInfo(windowsPath);
//获取C:\Windows下的所有的顶层文件夹
// DirectoryInfo[] dis = di.GetDirectories();
//通过指定搜索模式,指定SearchOption.AllDirectories,表示搜索所有子目录中的目录
DirectoryInfo[] dis = di.GetDirectories("*",SearchOption.AllDirectories);
DisplayResult(dis);
//获取顶层目录中的所有文件。
//FileInfo[] fis = di.GetFiles();
FileInfo[] fis = di.GetFiles("*", SearchOption.TopDirectoryOnly);
DisplayResult(fis);
//获取所有的FileSystemInfo对象。
FileSystemInfo[] fsi = di.GetFileSystemInfos("*");
DisplayResult(fsi);
Console.ReadLine();
}
static void DisplayResult(DirectoryInfo[] dis)
{
foreach (DirectoryInfo di in dis)
{
Console.WriteLine(di.FullName);
}
}
static void DisplayResult(FileInfo[] fi)
{
foreach (FileInfo fs in fi)
{
Console.WriteLine(fs.FullName);
}
}
static void DisplayResult(FileSystemInfo[] fis)
{
foreach (FileSystemInfo fsi in fis)
{
Console.WriteLine(fsi.FullName);
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetFilesAndDirectories
{
class Program
{
static void Main(string[] args)
{
const string windowsPath = @"C:\WINDOWS";
DirectoryInfo di = new DirectoryInfo(windowsPath);
//获取C:\Windows下的所有的顶层文件夹
// DirectoryInfo[] dis = di.GetDirectories();
//通过指定搜索模式,指定SearchOption.AllDirectories,表示搜索所有子目录中的目录
DirectoryInfo[] dis = di.GetDirectories("*",SearchOption.AllDirectories);
DisplayResult(dis);
//获取顶层目录中的所有文件。
//FileInfo[] fis = di.GetFiles();
FileInfo[] fis = di.GetFiles("*", SearchOption.TopDirectoryOnly);
DisplayResult(fis);
//获取所有的FileSystemInfo对象。
FileSystemInfo[] fsi = di.GetFileSystemInfos("*");
DisplayResult(fsi);
Console.ReadLine();
}
static void DisplayResult(DirectoryInfo[] dis)
{
foreach (DirectoryInfo di in dis)
{
Console.WriteLine(di.FullName);
}
}
static void DisplayResult(FileInfo[] fi)
{
foreach (FileInfo fs in fi)
{
Console.WriteLine(fs.FullName);
}
}
static void DisplayResult(FileSystemInfo[] fis)
{
foreach (FileSystemInfo fsi in fis)
{
Console.WriteLine(fsi.FullName);
}
}
}
}