IO流

  • 格式:doc
  • 大小:35.00 KB
  • 文档页数:9

System.IO命名空间中的类为托管应用程序提供文件以及其他形式的输入输出。

托管i/o的基本构件是流,而流是字节导向的数据的抽象表示。

流通过System.IO.Stream类表示.System.IO.FileStream允许将文件作为流访问;System.IO.MemoryStream允许将内存块作为流进行访问;…………托管和非托管的应用程序最常使用的IO形式是文件IO。

托管应用程序读写文件的一般步骤如下1、用FileStream对象打开文件2、进行二进制读写操作,在FileStream对象周围包装BinaryReader和BinaryWriter的实例,并调用BinaryReader和BinaryWriter方法执行输入输出。

3、要读写文本,在FileStream对象的周围包装一个StreamReader和StreamWriter,然后使用StreamReader和StreamWriter方法完成输入输出。

4、关闭FileStream对象。

下面是一个简单的文本文件读操作using System;using System.IO;class FileTest{static void Main(string [] args){string filename="testfile.txt";//打开文件并显示其内容StreamReader reader=null;try{reader=new StreamReader(filename);for(string line=reader.ReadLine();line!=null;line=reader.ReadLine()) Console.WriteLine(line);}catch(IOException e){Console.WriteLine(e.Message);}finally{if(reader!=null)reader.Close();}}}/*** FCL是一个非常丰富的类库,所以还有许多打开文件并进行读取的方法,比如* 1.用File.open创建一个FileStream,并围绕它包装一个StreamReader* FileStream stream=File.Open(filename,FileMode.Open,FileAccess.Read); * StreamReader reader=new StreamReaderaa(stream);* 2.使用File.OpenText,在一步内创建一个FileStream和一个StreamReader * StreamReader reader=File.OpenText(filename);* 当然,还有其他的方法* 若要对文本进行写入操作,可以使用StreamWriter*/其中的异常处理是为了防止意外的事情发生,如传递给StreamReader的构造函数的文件名非法,或者在执行raeder.Close();前匡架引发异常等。

C#追加文件StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw.WriteLine("追逐理想");sw.WriteLine("kzlll");sw.WriteLine(".NET笔记");sw.Flush();sw.Close();C#拷贝文件string OrignFile,NewFile;OrignFile = Server.MapPath(".")+"\\myText.txt";NewFile = Server.MapPath(".")+"\\myTextCopy.txt";File.Copy(OrignFile,NewFile,true);C#删除文件string delFile = Server.MapPath(".")+"\\myTextCopy.txt"; File.Delete(delFile);C#移动文件string OrignFile,NewFile;OrignFile = Server.MapPath(".")+"\\myText.txt"; NewFile = Server.MapPath(".")+"\\myTextCopy.txt"; File.Move(OrignFile,NewFile);C#创建目录// 创建目录c:\sixAgeDirectoryInfo d=Directory.CreateDirectory("c:\\sixAge"); // d1指向c:\sixAge\sixAge1DirectoryInfo d1=d.CreateSubdirectory("sixAge1");// d2指向c:\sixAge\sixAge1\sixAge1_1DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1"); // 将当前目录设为c:\sixAgeDirectory.SetCurrentDirectory("c:\\sixAge");// 创建目录c:\sixAge\sixAge2Directory.CreateDirectory("sixAge2");// 创建目录c:\sixAge\sixAge2\sixAge2_1Directory.CreateDirectory("sixAge2\\sixAge2_1");递归删除文件夹及文件<%@ Page Language=C#%><%@ Import namespace="System.IO"%><Script runat=server>public void DeleteFolder(string dir){if (Directory.Exists(dir)) //如果存在这个文件夹删除之{foreach(string d in Directory.GetFileSystemEntries(dir)) {if(File.Exists(d))File.Delete(d); //直接删除其中的文件elseDeleteFolder(d); //递归删除子文件夹}Directory.Delete(dir); //删除已空文件夹Response.Write(dir+" 文件夹删除成功");}elseResponse.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示}protected void Page_Load (Object sender ,EventArgs e){string Dir="D:\\gbook\\11";DeleteFolder(Dir); //调用函数删除文件夹}1、建立一个文本文件public class FileClass{public static void Main(){WriteToFile();}static void WriteToFile(){StreamWriter SW;SW=File.CreateText("c:\MyTextFile.txt");SW.WriteLine("God is greatest of them all");SW.WriteLine("This is second line");SW.Close();Console.WriteLine("File Created SucacessFully");}}2、读文件public class FileClass{public static void Main(){ReadFromFile("c:\MyTextFile.txt");}static void ReadFromFile(string filename){StreamReader SR;string S;SR=File.OpenText(filename);S=SR.ReadLine();while(S!=null){Console.WriteLine(S);S=SR.ReadLine();}SR.Close();}}3、追加操作public class FileClass{public static void Main(){AppendToFile();}static void AppendToFile(){StreamWriter SW;SW=File.AppendText("C:\MyTextFile.txt");SW.WriteLine("This Line Is Appended");SW.Close();Console.WriteLine("Text Appended Successfully");}}来源:CSDN--Cuike519 /cuike519/作者:Cuike519链接:/cuike519/archive/2005/01/19/259207.aspx版权:本文版权归原作者所有。

如果你要转载,请先征得作者同意。

你平时是怎么读取文件的?使用流读取。

是的没错,C#给我们提供了非常强大的类库(又一次吹捧了.NET一番),里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,那么你真的会用它读取文件中的数据了么?真的能读完全么?通常我们读取一个文件使用如下的步骤:1、声明并使用File的OpenRead实例化一个文件流对象,就像下面这样FileStream fs = File.OpenRead(filename);或者FileStream fs = FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);2、准备一个存放文件内容的字节数组,fs.Length将得到文件的实际大小,就像下面这样byte[] data = new byte[fs.Length];3、哇!开始读了,调用一个文件流的一个方法读取数据到data数组中fs.Read (data, 0, data.Length);呵呵!我们只写了3句就可以把文件里面的内容原封不动的读出来,真是太简洁了!可以这段代码真的能像你预期的那样工作么?答案是:几乎可以!在大部分情况下上面的代码工作的很好,但是我们应该注意Read方法是有返回值的,既然有返回值那么一定有其道理,如果按照上面的写法完全可以是一个没有返回值的函数。