码迷,mamicode.com
首页 > Windows程序 > 详细

C#文件的读写

时间:2015-04-02 22:11:04      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

一、用Filestream进行文件的操作

FileStream对象表示在磁盘或者网络路径上指向的文件的流。Filestream操作的是字节和字节数组。在用Filestream进行文件操作时要用到seek()方法,因为seek方法找到具体的文件操作位置,然后调用read或者write方法对文件进行操作。

文件创建:

FileStream aFile = new FileStream(filename,FileMode.<Member>,FileAccess.<Member>);

FileMode表示文件的打开属性:具体为Open(打开文件),OpenOrCreate(文件存在打开不存在则创建)..........

FileAccess属性:Read(打开的文件只能读)、Write(对于打开的文件只能进行写操作)、ReadWrite(对打开的文件即可以读也可以写操作)

文件的查找:

FileStream实现的方法是Seek方法,有两个参数,第一个参数:文件指针移动距离(以字节为单位)。第二个参数:开始计算的起始位置,用SeekOrigin枚举来表示 ,包含的值:Begin、Current、End。采用这种文件访问的文件可以称为随机访问,因为程序可以随时访问文件的任何位置。

例如:读文件

    private void buttonAdd_Click(object sender, EventArgs e)
        {
            byte [] bData = new byte[200];
            char [] cData = new char[200];
            try
            {
                FileStream fs = new FileStream(fileName, FileMode.Open);
                fs.Seek(130, SeekOrigin.Begin);//查找要操作的文件的范围。
                fs.Read(bData, 0,200);//读文件,但是读出来的是byte类型

                //byte转char

                /*
                Decoder d = Encoding.UTF8.GetDecoder();
                d.GetChars(bData, 0,bData.Length, cData, 0);
                 * */

                //byte转string
                string str = System.Text.Encoding.Default.GetString(bData);
                this.txtContext.Text = str.ToString();
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

写文件:

            string fileName = @"D:\";
            byte[] byteArray;
            char[] charData;
            try
            {
                fileName += this.textBox1.Text;
                FileStream fs = new FileStream(fileName, FileMode.Create);//打开文件

                charData = this.txtContext.Text.ToArray();//将string类型转换成char[]类型
                byteArray = new byte[charData.Length];

                Encoder d = Encoding.UTF8.GetEncoder();//将char[]类型转换为byte类型
                d.GetBytes(charData, 0, charData.Length, byteArray, 0, true);

                fs.Seek(0, SeekOrigin.Begin);//从文件的首段开始操作,写入byte型数据
                fs.Write(byteArray, 0, charData.Length);
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }

二、用stream进行文件的读写

Stream 操作的对象是字符数据,StreamWrite类将字符和字符串写入到文件中。

创建streamWrite对象:

FileStream fs = new FileStream("123.txt",FileMode.open);
StreamWriter sw = new StreamWriter(fs);

也可以直接从文件中创建writeStream对象:

StreamWriter sw = new StreamWrite("123.txt",true)


第二个参数Boolean 值规定是追加文件,也是创建新文件:
如果此值设置为 false,则创建一个新文件,或者截取现有文件并打开它.
如果此值设置为 true,则打开文件,保留原来的数据。如果找不到文件,则创建一个新文件。

例:写文件

static void Main(string[] args)
        {
            try
            {
                FileStream fs = new FileStream(@"D:\123.txt", FileMode.OpenOrCreate);
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine("hello world!");
                sw.WriteLine("深圳美极了!");
                sw.Flush();
                sw.Close();
            }
            catch (IOException ex)
            {
                Console.WriteLine("{0}", ex.Message.ToString());
            }
        }

读取文件:

static void Main(string[] args)
        {
            string line;
            try
            {
                FileStream fs = new FileStream(@"D:\123.txt",FileMode.Open);
                StreamReader sr = new StreamReader(fs);
                line = sr.ReadLine();
                while (line != null)
                {
                    Console.WriteLine(line.ToString());
                    line = sr.ReadLine();
                }
                sr.Close();
                Console.ReadKey();
            }
            catch (IOException ex)
            {
                Console.WriteLine("{0}", ex.Message.ToString());
            }
        }

 

C#文件的读写

标签:

原文地址:http://www.cnblogs.com/youthshouting/p/4388344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!