黑马程序员—File、FileStream、StreamReader、StreamWriter

   我们来看一下关于File、FileStream、StreamReader、StreamWriter。它们都可以进行文件的读写操作,但是它们是有区别的。

File类:

   File类是操作文件的类,有很多常用方法,如:

   File.Exists(string path);判断文件是不是存在,这里path是个物理路径;

   File.Copy(string sourceFileName,string destFileName);复制文件,不过要求新的文件名,这里sourceFileName是要复制的文件名,destFileName是复制后新文件的名称;

   File.Move(string sourceFileName,string destFileName);移动文件,也要求新的文件名,这里sourceFileName是要复制的文件名,destFileName是复制后新文件的新路径;

   File.Delete(string path);彻底删除文件,这里path是正确的路径;

   File也可以用来读写文件,常用的读取文件方法有:

   File.ReadAllLines(string path,Encoding encoding);这里path是路径,encoding是指定的编码方式;该方法返回一个string数组;

   File.ReadAllText(string path,Encoding encoding); 这里path是路径,encoding是指定的编码方式;该方法返回一个string类型变量;

  File写入文件的常用方法有:

  File.WriteAllLines(string path,string[] contents,Encoding encoding);这里path是要写入的新文件,contents是要写入的内容,encoding是指定的编码方式;

  File.WriteAllText(string path,string contents,Encoding encoding); 这里path是要写入的新文件,contents是要写入的内容,encoding是指定的编码方式;

还有一种方式,是不创建新的文件,只是在原有文件的基础上加入;

File.AppendAllLines(string path,string[] contents,Encoding encoding);和File.AppendAllText(string path,string contents,Encoding encoding);与上面写入用法差不多,只不过contents是我们想要加进去的内容。

使用File类的时候需要注意的是,如果读取文件的时候采用的编码和存储文件的时候采用的编码不一样,就会产生乱码;建议使用Encoding.Default;

File比较适合读写较小的文件,大文件最好使用FileStream或者StreamReader和StreamWriter;其中前者是操作字节的,而后者是操作字符的;通常我们会把创建流对象和进行读取这些操作写在using中,这样我们在写代码的时候就可以省略掉dispose()和close()了。

FileStream类:

   计算机中所有的数据都是以二进制即字节的形式存储到计算机中的,所以FileStream可以操作所有文件,主要用于读取磁盘上的文件或者向磁盘文件写入信息。使用FileStream时要引用System.IO;用法如下:

FileStream fs = File.Open();返回FileStream

FileStream fs = File.OpenRead();返回只读FileStream

FileStream fs = File.OpenWrite();返回只写FileStream

FileStream fs = new FileStream(path, FileMode.Open, FileAccess. Read);读数据,path为路径;如:

//   创建FileStream对象

            string path = @"F:\ a.txt";

            using (FileStream fs= new FileStream(path, FileMode.Open, FileAccess.Read))

            {

                //初始化字节数组

                byte[] buffer = new byte[fsRead.Length];

                //表示这次读取实际读到的数据

                fs.Read(buffer, 0, buffer.Length);

                //把字节数组转换成字符串

                string str = System.Text.Encoding.Default.GetString(buffer);

                Console.WriteLine(str);

                Console.ReadKey();

            }

 

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Write);写数据,path为路径,如:

//   创建FileStream对象

string path = @"F:\ a.txt";

            using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))

            {

                string str = "Hello,World!";

               //给字节数组赋值

                byte[] buffer = System.Text.Encoding.Default.GetBytes(str);

//将字节数组写入文件流

                fs.Write(buffer, 0, buffer.Length);

                Console.WriteLine("OK");

                Console.ReadKey();

            }

 

StreamReader与StreamWriter:

   StreamReader和StreamWriter是操作字符的,也就是文本。FileStream也可以操作文本,只是会涉及到转换;以后我们在对文本文件进行操作的时候,使用StreamReader和StreamWriter会简单一些,因为避免了字符串与字节数组间的转换。

写入数据如下:

  string path = @"F:\ a.txt";//路径

            using (StreamWriter sw = new StreamWriter(path,true,Encoding.Default))//这里true表示不覆盖原本内容,如果是false则覆盖原内容

            {

                string str = "Hello,World.";

                sw.WriteLine(str);

            }

            Console.WriteLine("OK");

            Console.ReadKey();

读取数据如下:

  string path = @"F:\ a.txt";//路径       

            using (StreamReader sr = new StreamReader(path,Encoding.Default))

            {

                Console.WriteLine(sr.ReadToEnd());               

            }

            Console.ReadKey();

 

posted @ 2013-05-08 09:46  帅大屋  阅读(290)  评论(0编辑  收藏  举报