C#窗体 流

时间:2022-05-13 18:03:35

流:(I/O)输入输出流

分类:文件流,内存流,网络流

流的操作一般要放在try catch里面,操作文件网络容易出现异常

命名空间:using system .IO;
using system .Text; //二进制转换需要的命名空间

一:类:FileStream:文件流

1.构造:一般用第三个重载
FileStream stream = new FileStream("d:\\test.txt"(路径),FileMode.Creat(打开模式),FileAccess.Read(只读)); 
第二个参数
CreateNew 指定操作系统应创建新文件,如果文件存在则引发异常。
Create 指定操作系统创建新文件,如果文件已存在则覆盖之。
OPen 指定 操作系统应打开现有文件,如果文件不存在则抛出异常。
OpenOrCreate 指定操作系统应打开文件,如果文件不存在则创建之。
Truncate 指定操作系统打开现有文件,如果文件已存在则清空,从Truncate打开的文件中读取将引发异常。
Append 若文件存在,则找到文件并找到文件结尾,或者创建一个新文件。
 
第三个参数
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.用法:

一:读文件:
取出文件路径
string path = openFileDialog1.FileName;

打开文件流
FileMode是打开模式 Open是打开文件 Append是追加 Create是创建 CreateNew创建新的
OpenOrCreate有打开,没有创建 Truncate打开文件清空
FileAccess 读或写
FileStream fs = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Read);

造二进制数组,长度是流的长度
byte[] bf = new byte[fs.Length];

将文件中的数据读到二进制数组里面
fs.Read(bf, 0, bf.Length);

将而进制转码为字符串显示
richTextBox1.Text = Encoding.Default.GetString(bf);

关闭流
fs.Close();

二:写文件:
取文件路径
string path = saveFileDialog1.FileName;

打开文件流
FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write);

将字符串转换为二进制数组
byte[] nr = Encoding.Default.GetBytes(richTextBox1.Text);

将而进制数组写入文件
fs.Write(nr,0,nr.Length);

关闭流
fs.Close();

 

StreamWrite类:

取文件路径
string path = saveFileDialog1.FileName;

打开文件流
FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write);

第一种方式,使用流
StreamWriter sw = new StreamWriter(fs,Encoding.Default);
第二种方式,不使用流
StreamWriter sw = new StreamWriter(path,true,Encoding.Default);

将字符串写入文件
sw.Write(richTextBox1.Text);

关闭
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();

 

对话框:
ColorDialog:颜色选择控件
colorDialog1.ShowDialog();
button1.BackColor = colorDialog1.Color;

FolderBrowserDialog:文件夹选择控件
folderBrowserDialog1.ShowDialog();
label1.Text = folderBrowserDialog1.SelectedPath;

FontDialog:字体样式选择控件
fontDialog1.ShowDialog();
label1.Font = fontDialog1.Font;

openFileDialog:文件选择控件
DialogResult dr = openFileDialog1.ShowDialog();
if(dr == DialogResult.OK)
{
label1.Text = openFileDialog1.FileName;
}

限制打开的文件后缀:Filter = 文本文件|*.txt|所有文件|*.*;
一个显示一个后缀是一组,添加另一组需要继续使用'|'

saveFileDialog:保存路径选择控件
saveFileDialog1.ShowDialog();
label1.Text = saveFileDialog1.FileName;