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();
}
}