一、
1、IO命名空间包含便于在数据流和文件中读取和写入数据的类
2、IO命名空间中用于文件目录操作类
二、
System.IO命名空间下提供了三种操作目录的类:
Directory 静态类提供通过目录和子目录进行创建、移动和删除等静态方法。
DirectoryInfo 提供通过目录和子目录进行创建、移动和删除等实例方法。
Path 静态类的成员使用户可以快速方便的对文件或者目录路径信息的String实例,执行常见静态操作方法。
File提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream。Filelnfo类提供实例方法。
Directory提供通过目录和子目录进行创建、移动和枚举的静态方法。
Directorylnfo类提供实例方法
Filelnfo提供用于创建、复制、删除、移动和打开文件的实例方法,并协助创建FileStream。File类提供静态方法。
Directorylnfo提供通过目录和子目录进行创建、移动和枚举的实列方
Directory类提供静态方法。
三、
1、IO是解决ROM和其他持久化存储介质之间的桥梁,用IO架设IO流,通过IO流来传输数据。
2、带Info的都是按照对象的方式处理的。不带Info都是用 类名.方法 进行处理。结果都是一样,看个人使用习惯,静态类每次使用都要添加路径,而带Info创建对象只需给一次。
using System;
using System.IO;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
//OpDirectory();
//OpFile();
//获取目录下的所有子目录
//ShowSubDirs(@"C:\Program Files");
//获取目录下的所有文件
//ShowSubFiles(@"C:\Program Files\7-Zip");
//ShowAll(@"C:\Program Files\7-Zip");
FilePath();
}
public static void FilePath()
{
//拿到文件所在目录
Console.WriteLine(Path.GetDirectoryName(@"C:\mydir\1.1.txt"));
//拿到带后缀名的文件
Console.WriteLine(Path.GetFileName(@"C:\mydir\1.1.txt"));
//拿到不带后缀名的文件
Console.WriteLine(Path.GetFileNameWithoutExtension(@"C:\mydir\1.1.txt"));
//拿到文件后缀名
Console.WriteLine(Path.GetExtension(@"C:\mydir\1.1.txt"));
//创建临时文件
Console.WriteLine(Path.GetTempFileName());
string path1 = @"test";
string path2 = "role.sav";
//不需要自己添加分隔符
Console.WriteLine(Path.Combine(path1, path2));
}
//File方法 文件的操作
public static void OpFile()
{
//一
//Directory.CreateDirectory(@"C:\aaa");
*覆盖式的创建
//File.Create(@"C:\aaa\1.txt");
//为了防止文件覆盖,可以先判断文件是否存在
//if (File.Exists(@"C:\aaa\1.txt") == false)
//{
// File.Create(@"C:\aaa\1.txt");
//}
//二、用对象的方式更加方便
FileInfo file = new FileInfo(@"C:\aaa\1.txt");
if (file.Exists == false)
{
file.Create();
}
//永久删除文件
file.Delete();
}
//Directory方法 目录的操作
public static void OpDirectory()
{
/*静态类*/
//创建一个目录,*如果有重名则会置之不理
Directory.CreateDirectory(@"C:\mydir");
Console.WriteLine(Directory.Exists(@"C:\mydir"));
//删除目录
Directory.Delete(@"C:\mydir");
//删除目录(包括目录下面的子目录和文件)
Directory.Delete(@"C:\mydir", true);
/*用对象的方式,与上边是一样,但是更加方便一下*/
DirectoryInfo dir = new DirectoryInfo(@"C:\mydir");
dir.Create();
dir.Delete(true);
}
//获得所有子目录
public static void ShowSubDirs(String path)
{
//可以获得所有子目录
string[] subDirs = Directory.GetDirectories(path);
foreach (var item in subDirs)
{
Console.WriteLine(item);
}
}
//获得目录下的所有文件
public static void ShowSubFiles(String path)
{
DirectoryInfo myDir = new DirectoryInfo(path);
//非静态类得到的是数据的实体而不是String
FileInfo[] files = myDir.GetFiles();
foreach (var item in files)
{
//不带路径
//Console.WriteLine(item.Name);
//带路径
Console.WriteLine(item.FullName);
}
}
/// <summary>
/// 查看某个目录中的子文件和子目录
/// </summary>
/// <param name="path">要查看的路径</param>
public static void ShowAll(String path)
{
//先查看目录
foreach (var item in Directory.GetDirectories(path))
{
Console.WriteLine(item);
ShowAll(item);
}
//查看所有的子文件
foreach (var item in Directory.GetFiles(path))
{
Console.WriteLine(item);
}
}
}
}