天天看點

C#讀寫檔案、周遊檔案、打開儲存檔案,窗體程式

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace FileReadWriteDemo

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        //周遊檔案 - 浏覽按鈕

        private void buttonBrowse_Click(object sender, EventArgs e)

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "(*.*)|*.*";                //過濾檔案類型

            ofd.RestoreDirectory = true; //記憶上次浏覽路徑

            if(ofd.ShowDialog() == DialogResult.OK)

            {

                DirectoryInfo dir = Directory.GetParent(ofd.FileName);   //擷取檔案所在的父目錄

                textBox1.Text = dir.ToString()+"\\";

            }

        //周遊檔案 - 周遊按鈕

        private void buttonTransform_Click(object sender, EventArgs e)

            listBox1.Items.Clear();

            TransformFiles(textBox1.Text.Trim());

        public void TransformFiles(string path)

            try

                DirectoryInfo dir = new DirectoryInfo(path);

                DirectoryInfo[] dirs = dir.GetDirectories();  //擷取子目錄

                FileInfo[] files = dir.GetFiles("*.*");  //擷取檔案名

                foreach (DirectoryInfo d in dirs)

                {

                    TransformFiles(dir+d.ToString()+"\\"); //遞歸調用

                }

                foreach(FileInfo f in files)

                    listBox1.Items.Add(dir+f.ToString());

            catch (Exception ex)

                MessageBox.Show(ex.Message.ToString());

            }           

        //打開儲存 - 打開按鈕

        private void buttonOpen_Click(object sender, EventArgs e)

            textBox3.Text = "";

            ofd.Filter = "(*.txt)|*.txt|(*.*)|*.*";

            ofd.RestoreDirectory = true;

            {               

                textBox2.Text = ofd.FileName;

                FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);

                StreamReader sr = new StreamReader(fs);

                try

                    ofd.OpenFile(); //打開檔案

                    string line = sr.ReadLine(); //讀取文本行

                    while (line != null)

                    {

                        textBox3.Text += line + "\n";  //換行後繼續讀取直至line==null

                        line = sr.ReadLine();

                    }

                catch (Exception ex)

                    MessageBox.Show(ex.Message.ToString());

                finally

                    sr.Close();

                    fs.Close();

        //打開儲存 - 儲存按鈕

        private void buttonSave_Click(object sender, EventArgs e)

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "(*.txt)|*.txt|(*.*)|*.*";

            sfd.AddExtension = true;

            sfd.RestoreDirectory = true;

            if(sfd.ShowDialog() == DialogResult.OK)

                textBox2.Text = sfd.FileName;

                FileStream fs = new FileStream(sfd.FileName,FileMode.Create);

                StreamWriter sw = new StreamWriter(fs);

                    sw.Write(textBox3.Text);

                    sw.Flush();

                catch(Exception ex)

                    sw.Close();

        //讀寫文本 - 寫入資料按鈕

        private void buttonWrite_Click(object sender, EventArgs e)

            if (!(Directory.Exists(@"D:\temp")))

                Directory.CreateDirectory(@"D:\temp");

            string filePath = @"D:\temp\qq.doc";

            if(File.Exists(filePath))

                labelResult.ForeColor = Color.Red;

                labelResult.Text = "目前檔案已經存在!";

                return;

            FileStream fs = new FileStream(filePath,FileMode.Create);

            StreamWriter sw = new StreamWriter(fs);

                sw.Write(textBox4.Text);

                sw.Flush();

                labelResult.ForeColor = Color.Green;

                labelResult.Text = "寫入資料完成!";

            finally

                sw.Close();

                fs.Close();

        //讀寫文本 - 讀取資料按鈕

        private void buttonRead_Click(object sender, EventArgs e)

            textBox5.Text = "";

            if(!(File.Exists(filePath)))

                labelResult.Text = filePath+"檔案不存在!";

            FileStream fs = new FileStream (filePath,FileMode.Open,FileAccess.Read);

            StreamReader sr = new StreamReader(fs);

                string line = sr.ReadLine();

                while(line != null)

                    textBox5.Text += line + "\n";

                    line = sr.ReadLine();

                labelResult.Text = "讀取資料成功!";

            catch(Exception ex)

                sr.Close();

        //讀寫二進制檔案 - 寫入資料按鈕

        private void buttonWrite2_Click(object sender, EventArgs e)

            string filePath = @"D:\temp\test.data";

                labelResult2.ForeColor = Color.Red;

                labelResult2.Text = "檔案已經存在!";

            BinaryWriter bw = new BinaryWriter(fs);

            for (int i = 0; i < 200; i++)

                bw.Write((int)i);

            bw.Flush();

            labelResult2.ForeColor = Color.Green;

            labelResult2.Text = "寫入資料成功!";

            bw.Close();

            fs.Close();

        //讀寫二進制檔案 - 讀取資料按鈕

        private void buttonRead2_Click(object sender, EventArgs e)

            textBox6.Text = "";

                labelResult2.Text = filePath+"檔案不存在!";

            FileStream fs = new FileStream(filePath,FileMode.Open,FileAccess.Read);

            BinaryReader br = new BinaryReader(fs);

                Int32 intTmp = br.ReadInt32();

                textBox6.Text += "->" + intTmp.ToString();

            labelResult2.Text = "讀取資料成功!";

            br.Close();

    }

}