private void button1_Click(object sender, EventArgs e) { //顯示顏色選擇器 colorDialog1.ShowDialog(); //把取到的顏色賦值給panel panel1.BackColor = colorDialog1.Color; }
FontDialog:字體樣式選擇控件
private void button3_Click(object sender, EventArgs e) { //顯示字體樣式選擇器 fontDialog1.ShowDialog(); //取值 label2.Font = fontDialog1.Font; }
FolderBrowserDialog:文件夾選擇控件
private void button2_Click(object sender, EventArgs e) { //顯示文件夾選擇器 folderBrowserDialog1.ShowDialog(); //取文件路徑 label1.Text = folderBrowserDialog1.SelectedPath; }
openFileDialog:文件選擇控件
※限制打開的文件後綴:Filter = 文本文件|*.txt|所有文件|*.*;
一個顯示一個後綴是一組,添加另一組需要繼續使用'|'
private void button4_Click(object sender, EventArgs e) { //設置能夠打開什麼類型的文件 openFileDialog1.Filter = "文本文件|*.txt|所有文件|*.*"; //顯示 DialogResult:獲取或設置窗體的對話框結果 DialogResult dr = openFileDialog1.ShowDialog(); //取值 if (dr == DialogResult.OK)//為了防止用戶不選擇 { label3.Text = openFileDialog1.FileName; } }
saveFileDialog:保存路徑選擇控件
※選擇已有的文件會覆蓋
private void button5_Click(object sender, EventArgs e) { //顯示 DialogResult dr = saveFileDialog1.ShowDialog(); //取值 if (dr == DialogResult.OK) { label4.Text = saveFileDialog1.FileName; } }
二、流 文件操作
流:(I/O)輸入輸出流
分類:文件流,內存流,網絡流
流的操作一般要放在try catch裡面,操作文件網絡容易出現異常
命名空間:using system .IO;
using system .Text; //二進制轉換需要的命名空間
(一)類:FileStream:文件流
1.構造:一般用第三個和第六個重載
FileStream stream = new FileStream("d:\\test.txt"(路徑),FileMode.Creat(打開模式),FileAccess.Read(只讀));
※寫路徑的時候前面加@"d:\test.txt",或者寫雙斜槓
第二個參數 枚舉類型
CreateNew 指定操作系統應創建新文件,如果文件存在則引發異常。
Create 指定操作系統創建新文件,如果文件已存在則覆蓋之。
OPen 指定 操作系統應打開現有文件,如果文件不存在則拋出異常。
OpenOrCreate 指定操作系統應打開文件,如果文件不存在則創建之。
Truncate 指定操作系統打開現有文件,如果文件已存在則清空,從Truncate打開的文件中讀取將引發異常。
Append 若文件存在,則找到文件並找到文件結尾,或者創建一個新文件。
第三個參數 確定訪問文件的方式 默認可讀可寫
Read 只讀 對文件的讀訪問,擁有讀取權限。
Write 只寫 對文件的寫訪問,擁有寫入權限。
ReadWrite 可讀可寫 對文件的讀訪問和寫訪問,擁有讀取和寫入兩個權限。
2.屬性:
Length :流的長度
Position:流的當前位置,探測光標的當前位置
3.方法:
Write(byte[]流的內容,int從第幾個位置寫,int寫入長度);
參數,第一個二進制數組,第二個從哪個位置開始寫一般從0開始,第三個寫進去多長(一般用Length,需要強轉為int)。
Read(byte[]存放讀出流的空間,int從第幾個位置讀,int讀多長);讀文件
seek(int偏移量,SeekOrigin.Begin(從哪計算偏移量))調整流的當前位置,seek(0,seekOrigin.End),將光標移到末尾
Flush();清除緩存
Close();關閉流
4.用法:
讀文件內容:
private void button1_Click(object sender, EventArgs e) { //顯示工具 DialogResult dr = openFileDialog1.ShowDialog(); //取值 if (dr == DialogResult.OK) { //文件路徑 string path = openFileDialog1.FileName; //造文件流 FileStream fs = new FileStream(path,FileMode.Open); //造一個二進制數組,用來存儲讀到的數據 byte[] sj = new byte[fs.Length]; //將文件讀取為二進制數據,放到二進制數組裡面 fs.Read(sj,0,sj.Length); //將二進制數據轉為字符串 Encoding格式轉換 Default自動獲取當前程序的編碼方式 Getstring返回字符串 richTextBox1.Text = Encoding.Default.GetString(sj); //關閉流 fs.Close(); } }
寫文件:把寫的內容存入
private void button2_Click(object sender, EventArgs e) { //顯示選擇文件對話框 DialogResult dr = saveFileDialog1.ShowDialog(); //取路徑 if (dr == DialogResult.OK) { //文件路徑 string path = saveFileDialog1.FileName; //取出文本框中的內容 string nr = richTextBox1.Text; //將字符串轉為二進制數組 byte[] sj = Encoding.Default.GetBytes(nr); //造一個文件流 FileStream fs = new FileStream(path,FileMode.Create); //向文件裡面寫數據 fs.Write(sj,0,sj.Length); //關閉流 fs.Close(); } }
(二)StreamWrite類:只能寫
private void button3_Click(object sender, EventArgs e) { //顯示選擇文件對話框 DialogResult dr = saveFileDialog1.ShowDialog(); //取路徑 if (dr == DialogResult.OK) { //文件路徑 string path = saveFileDialog1.FileName; //取出文本框中的內容 string nr = richTextBox1.Text;//造一個文件流 FileStream fs = new FileStream(path, FileMode.Create); //造一個StreamWrite對象 StreamWriter sw = new StreamWriter(fs, Encoding.Default); //寫入文件 sw.Write(nr); //關閉 sw.Close(); fs.Close(); } }
第一種方式,使用流
StreamWriter sw = new StreamWriter(fs,Encoding.Default);
第二種方式,不使用流 第二個參數是是否追加內容
StreamWriter sw = new StreamWriter(path,true,Encoding.Default);
(三)StreamRead類:只能讀
//取文件路徑
string path = saveFileDialog1.FileName;
//打開文件流
FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write);
//第一種方式,使用流
StreamReader sr = new StreamReader(fs,Encoding.Default);
//第二種方式,不適用流
//StreamReader sr = new StreamReader(path,Encoding.Default);
//讀一行
richTextBox1.Text = sr.ReadLine();
//讀所有
richTextBox1.Text = sr.ReadToEnd();
//關閉
sr.Close();