首页 > 代码库 > 5个对话框和FileStream:文件流

5个对话框和FileStream:文件流

1、private void button1_Click(object sender, EventArgs e)
{
colorDialog1.ShowDialog();//显示颜色选择器
panel1.BackColor = colorDialog1.Color;//把取到的颜色赋值给panel
}

2、private void button2_Click(object sender, EventArgs e)
{
folderBrowserDialog1.ShowDialog();//显示文件夹选择器
label1.Text= folderBrowserDialog1.SelectedPath;//取文件的路径
}

3、private void button3_Click(object sender, EventArgs e)
{
//显示
fontDialog1.ShowDialog();字体样式选择控件
label2.Font = fontDialog1.Font;//取值
}

4、private void button4_Click(object sender, EventArgs e)
{
//设置能够打开什么类型的文件
openFileDialog1.Filter = "文本文件|*.txt|所有文件|*.*";//这是两种
//显示
DialogResult dr = openFileDialog1.ShowDialog();

//取值
if (dr == DialogResult.OK)//加一个判断看是否选择
{
label3.Text = openFileDialog1.FileName;
}
}

5、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(只读));

 


//造了一个文件流
// FileStream fs = new FileStream("E:\\aa.txt",FileMode.Open);//第三个第六个

第二个参数(打开模式)
CreateNew 指定操作系统应创建新文件,如果文件存在则引发异常。
Create 指定操作系统创建新文件,如果文件已存在则覆盖之。
OPen 指定 操作系统应打开现有文件,如果文件不存在则抛出异常。
OpenOrCreate 指定操作系统应打开文件,如果文件不存在则创建之。
Truncate 指定操作系统打开现有文件,如果文件已存在则清空,从Truncate打开的文件中读取将引发异常。截取
Append 若文件存在,则找到文件并找到文件结尾,或者创建一个新文件。追加

 

 FileStream fs = new FileStream("E:\\aa.txt", FileMode.Open,FileAccess.Read); 

第三个参数(只读)
Read 对文件的读访问,拥有读取权限。
Write 对文件的写访问,拥有写入权限。
ReadWrite 对文件的读访问和写访问,拥有读取和写入两个权限。 


写路径的时候前面加@,或者写双斜杠 @"d:\test.txt"

 

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)
{
//拖动一个控件openFileDialog到窗体
//显示工具
DialogResult dr = openFileDialog1.ShowDialog();
//取值
if (dr == DialogResult.OK)
{
//文件路径
string path = openFileDialog1.FileName;
//造文件流
FileStream fs = new FileStream(path,FileMode.Open);


//1、造一个二进制数组,用来存储读到的数据
byte[]sj=new byte[fs.Length];//流的长度
//2、将文件读取为二进制数据,放到二进制数组里面
fs.Read(sj,0,sj.Length);
//3、将二进制数据转为字符串
richTextBox1.Text= Encoding.Default.GetString(sj);
//流不能 读取 word 、表格等第三方做的
//关闭流
fs.Close();
}
}

 

 

 

 写文件:

private void button2_Click(object sender, EventArgs e)
{
//拖动一个控件saveFileDialog到窗体
//显示选择文件对话框
DialogResult dr = saveFileDialog1.ShowDialog();
//去路径
if (dr == DialogResult.OK)
{
//文件路径
string path = saveFileDialog1.FileName;

//取出文本框中的内容
string nr= richTextBox1.Text;
//1、将字符串转为二进制数组
byte[] sj= Encoding.Default.GetBytes(nr);

//造一个文件流
FileStream fs = new FileStream(path,FileMode.Create);

//2、向文件里写数据
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;
//1、将字符串转为二进制数组
// byte[] sj = Encoding.Default.GetBytes(nr);

//造一个文件流
FileStream fs = new FileStream(path, FileMode.Create);

//造一个streamwrite对象
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
//写入文件
sw.Write(nr);//自动转码
//关闭
sw.Close();
fs.Close();
}
}

 

 

 三、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();

 

5个对话框和FileStream:文件流