C#文件/目录处理 以及 文件的读写
一. 文件处理C#提供了File和FileInfo类来进行文件处理,两者的区别是File不能实例化,只提供静态的方法,适合执行单次的操作,而FileInfo可以实例化;1. 获取文件信息(不包含子目录):FileInfo myfile = new FileInfo("c:\\abc.txt");Console.WriteLine(myfile.Attributes);//属性Console.WriteLine(myfile.CreationTime);//创建时间Console.WriteLine(myfile.CreationTimeUtc);//Utc时间Console.WriteLine(myfile.Directory);//目录Console.WriteLine(myfile.DirectoryName);//目录名字Console.WriteLine(myfile.Exists);//是否存在Console.WriteLine(myfile.Extension);文件扩展名Console.WriteLine(myfile.FullName);//全名Console.WriteLine(myfile.IsReadOnly);是否只读Console.WriteLine(myfile.LastAccessTime);上次访问Console.WriteLine(myfile.LastAccessTimeUtc);时间Console.WriteLine(myfile.LastWriteTime);上次读入Console.WriteLine(myfile.LastWriteTimeUtc);时间Console.WriteLine(myfile.Length);文件长度Console.WriteLine(myfile.Name);文件名字Console.WriteLine("以上是实例文件的属性");2. 判断文件是否存在:FileInfo myfile = new FileInfo("c:\\abc.txt");if (!myfile.Exists)//判断文件是否存在myfile.Create();或者if (!File.Exists("c:\\abc.txt"))File.CreateText(markinfo.strResultFilePath);//File.Create(markinfo.strResultFilePath);使用Create函数之后打开文件进行读写,可能会报The Process cannot access the file because it is being used by another process的异常,这是因为该文件生成之后一直被创建进程所占用,直到进程结束,可以将代码改为File.Create(markinfo.strResultFilePath).Close();3. 打开文件,FileMode 和 FileAccess 枚举类型FileMode:成 员文 件 存 在文件不存在Append打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用创建一个新文件。只能与枚举FileAccess.Write联合使用Create删除该文件,然后创建新文件创建新文件CreateNew抛出异常创建新文件Open打开现有的文件,流指向文件的开头抛出异常OpenOrCreate打开文件,流指向文件的开头创建新文件Truncate打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期抛出异常FileAccess:成 员说 明Read打开文件,用于只读Write打开文件,用于只写ReadWrite打开文件,用于读写File和FileInfo类都提供了OpenRead()和OpenWrite()方法,更易于创建FileStream对象。前者打开了只读访 问的文件,后者只允许写入文件:FileStream aFile = File.OpenRead("Data.txt");或者FileInfo aFileInfo = new FileInfo("Data.txt");FileStream aFile = aFile.OpenRead();4. 读文件:对文件进行读操作可以通过FileStream:FileStream fs = new FileStream("c:\\abc.txt", FileMode.Create, FileAccess.Write);fs.Write("Hello!", 0, "Hello!".Length);fs.Close();或者通过FileStream和StreamReader的组合:FileStream fs = new FileStream("c:\\abc.txt", FileMode.Open);StreamReader sr = new StreamReader(fs);try{string strLine = "";strLine = sr.ReadLine();while(strLine != null){string[] linestrs = strLine.Split();strLine = sr.ReadLine();}sr.Close();fs.Close();}catch (IOException ex){sr.Close();fs.Close();throw ex;}FileStream对象表示在磁盘或网络路径上指向文件的流,操作的是字节和字节数组;经常使用StreamReader或 StreamWriter执行文件读写的功能,因为Stream类操作的是字符数据,字符数据易于使用;但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行。5. 写文件:FileStream fs = new FileStream("c:\\abc.txt", FileMode.Open);StreamWriter sw = new StreamWriter(fs);try{string str = “hello!";sw.Write( "The 1st Line: ");sw.WriteLine(str);sw.Close();fs.Close();}catch (IOException ex){sw.Close();fs.Close();throw ex;}具体文件定位读写的方法参考下面转载:1. 文件位置FileStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置。在大多数情况下,当打开文件时,它就指向文件的开始位置,但 是此指针可以修改。这允许应用程序在文件的任何位置读写,随机访问文件,或直接跳到文件的特定位置上。当处理大型文件时,这非常省时,因为马上可以定位到 正确的位置。实现此功能的方法是Seek()方法,它有两个参数:第一个参数规定文件指针以字节为单位的移动距离。第二个参数规定开始计算的起始位置,用SeekOrigin枚举的一个值表示。Seek Origin枚举包含3个值:Begin、Current和End。例如,下面的代码行将文件指针移动到文件的第8个字节,其起始位置就是文件的第1个字节:aFile.Seek(8,SeekOrigin.Begin);下面的代码行将指针从当前位置开始向前移动2个字节。如果在上面的代码行之后执行下面的代码,文件指针就指向文件的第10个字节:aFile.Seek(2,SeekOrigin.Current);注补充:软件开发 , C# ,
上一个:c#生成大量随机码
下一个:C#中的new修饰符以及多态