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);
官方注解:获取指定目录中子目录的名称,注意返回的是绝对路径
返回数组