File类Path类Directory类常用方法-附绝对及相对地址

File类
命名空间:Using System.IO
File英文翻译:文件,档案
是一个静态类
常用方法:File.Create(string fileName);
直接输入FileName则直接在debug文件下生成.
请注意:如果没有文件夹的话是会提示找不到路径的.及不会自动创建文件夹

文件路径分为绝对路径和相对路径。完整描述文件位置的路径就是绝对路径,相对于目标的位置就是相对路径。
绝对地址:直接在string fileName处输入文件名称则直接在程序运行处生成文件.
当路径中文件全名前加上一个.\
则是相同的意思
图片不容易上传,附上代码及错误信息
代码:
.\

File.Create(@".\1\2.txt");

错误提示:
未能找到路径“E:\vs2013学习-言之命至\19期\Test\ConsoleApplication1\bin\Debug\1\2.txt”的一部分。
报错原因是没有1文件夹,但是.\于直接写文件名作用相同,表示当前目录

..\

File.Create(@"..\1\2.txt");

错误提示:
未能找到路径“E:\vs2013学习-言之命至\19期\Test\ConsoleApplication1\bin\1\2.txt”的一部分。
结论:表示父目录

…\

File.Create(@"...\1\2.txt");

错误提示:
未能找到路径“E:\vs2013学习-言之命至\19期\Test\ConsoleApplication1\bin\1\2.txt”的一部分
结论:错误提示是和..\一样的,最多是1个点和两个点的区别

….\

File.Create(@"..\..\1\2.txt");

错误提示:未能找到路径“E:\vs2013学习-言之命至\19期\Test\ConsoleApplication1\1\2.txt”的一部分。
结论:父父目录..

File常用方法:
File.AppendAllText(“file name”,string txt);
官方注解:打开一个文件,向其中追加指定的字符串,然后关闭该文件,如果文件不存在,此方法创建一个文件,将指定的字符串写入文件,然后关闭该文件
.请注意其中的判断信息

public static void AppendAllText(string path, string contents)
        {
            if (path == null)
            {
                throw new ArgumentNullException("path");
            }
            if (path.Length == 0)
            {
                throw new ArgumentException(Environment.GetResourceString("Argument_EmptyPath"));
            }
            InternalAppendAllText(path, contents, StreamWriter.UTF8NoBOM);
        }

判断是否为空,判断长度是否为0
,其中的InternalAppendAllText方法为一个静态方法.

private static void InternalAppendAllText(string path, string contents, Encoding encoding)
        {
            using (StreamWriter writer = new StreamWriter(path, true, encoding))
            {
                writer.Write(contents);
            }
        }

在代码中可以看到,使用StreamWriter写入,编码格式是:StreamWriter.UTF8NoBOM

FIle.Delete(string path)
删除指定路径下的文件
官方注解:删除指定的文件,如果指定的文件不存在,则不引发异常.

 internal static void InternalDelete(string path, bool checkHost)
        {
            string fullPathInternal = Path.GetFullPathInternal(path);
            FileIOPermission.QuickDemand(FileIOPermissionAccess.Write, fullPathInternal, false, false);
            if (!Win32Native.DeleteFile(fullPathInternal))
            {
                int errorCode = Marshal.GetLastWin32Error();
                if (errorCode != 2)
                {
                    __Error.WinIOError(errorCode, fullPathInternal);
                }
            }
        }

现将路径转换为绝对路径
Path.GetFullPathInternal(path)

File.Exist(string path)
官方注解:判断指定文件是否存在

File.Move()
剪切文件.
注意微软判断时长度 是否为空都不会判断,并且catch要捕捉的内容很明确

File.WriteAllLines(string path,string[] s,Encoding.编码格式)
注意这是会覆盖掉原先的数据的

File.ReadAllLines();读取返回的数组
核心代码

 List<string> list = new List<string>();
            using (StreamReader reader = new StreamReader(path, encoding))
            {
                string str;
                while ((str = reader.ReadLine()) != null)
                {
                    list.Add(str);
                }
            }
            return list.ToArray();

实际上运行的还是StreamReader.ReadLIne(),一行一行的读取
最后返回的是数组,LIst.Toarray,判断条件为null和空是不同的

File.WriteAllText()

Path类:
命名空间:IO
字面意思:路径
是一个专门操作路径的静态类
Path.ChangExtension(string path,string Extension);
官方注解:更改路径字符串的扩展名
请注意这不会实际上改变后缀名,将返回文件名和修改后的后缀名
核心代码:

 while (--length >= 0)
            {
                char ch = path[length];
                if (ch == '.')
                {
                    str = path.Substring(0, length);
                    break;
                }
                if (((ch == DirectorySeparatorChar) || (ch == AltDirectorySeparatorChar)) || (ch == VolumeSeparatorChar))
                {
                    break;
                }
            }

结论:循环判断while(–length),从后面开始直到找到.字符后,前面的一截都算是文件名

Path.Combine(“string path”,”string path”);
官方注解:将两个字符串组合成一个路径
核心代码:

 if (path2.Length == 0)
            {
                return path1;
            }
            if (path1.Length == 0)
            {
                return path2;
            }
            if (IsPathRooted(path2))
            {
                return path2;
            }
            char ch = path1[path1.Length - 1];
            if (((ch != DirectorySeparatorChar) && (ch != AltDirectorySeparatorChar)) && (ch != VolumeSeparatorChar))
            {
                return (path1 + @"\" + path2);
            }
            return (path1 + path2);

在这边需要注意的是,ISPAthRooted(string path)
是获取一个值,是否是绝对路径还是相对路径.

Path.GetDirectoryName(string path);
官方注解:返回指定路径字符串的目录信息,请注意这里使用相对路径是无效的
核心代码:

   int length = path.Length;
            int startIndex = length;
            while (--startIndex >= 0)
            {
                char ch = path[startIndex];
                if (ch == '.')
                {
                    if (startIndex != (length - 1))
                    {
                        return path.Substring(startIndex, length - startIndex);
                    }
                    return string.Empty;
                }

从后面不断找.,如果找到,并且他的位置不在最后一位,则成功.
Path.GetFullPath(string path);
官方注解:返回指定路径字符串的绝对路径–这是绝对路径

Path.GetFileName(string path);
官方注解:返回指定路径字符串的文件名和扩展名,获取到的仅仅包含文件名及或站名

Path.GetFileNameWithOutExtension(path):获取文件名不包含扩展名

Path.GetTempFileName();
官方注解:创建磁盘上唯一命名的零字节的临时文件并返回该文件的完整路径
例如返回的是
“C:\Users\75353\AppData\Local\Temp\tmpBB2.tmp”

DIrectory类
命名空间:IO
英文翻译:目录
专门操作目录的静态类
Directory.CreateDirectory(string path)
官方注解:按path的指定创建所有的目录及子目录

Directory.Delete(string path,bool state)
官方注解:从指定路径删除空目录,
出于保护目的,如果目录不是空的,会提示目录不是空的错误,可以将true写上

Directory.Exists(string path)
官方注解:确定给定路径是否引用磁盘上的现有目录

Directory.GetDirectories(string path);
官方注解:获取指定目录中子目录的名称,注意返回的是绝对路径
返回数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值