流:(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;

C#窗体 流的更多相关文章

  1. C#窗体 WinForm 对话框,流

    一.对话框 ColorDialog:颜色选择控件 private void button1_Click(object sender, EventArgs e) { //显示颜色选择器 colorDia ...

  2. 2017年11月26日 C#流&&窗体对话框

    C#流 在顶端加入using System.IO就可以使用流 StreamReder a = new StreamReder();//读取 前面什么都可以 = sr.ReadToEnd();//用法 ...

  3. 关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例(在Delphi 初始化每一个TWinControl 对象时,将会在窗体 的属性(PropData)中加入一些标志,DLL的HInstance的值与HOST 进程的HInstance并不一致)

    建议先参考我上次写的博文跨进程获取Richedit中Text: 获得QQ聊天输入框中的内容 拿到这个问题,我习惯性地会从VCL内核开始分析.找到TRichEdit声明的单元,分析TRichEdit保存 ...

  4. Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单

     * 创建图形化界面  * 1.创建frame窗体  * 2.对窗体进行基本设置  *   比如大小.位置.布局  * 3.定义组件  * 4.将组件通过窗体的add方法添加到窗体  * 5.让窗体显 ...

  5. 5.JAVA之GUI编程窗体事件

    我们回顾下第三篇时的内容: 在3.JAVA之GUI编程Frame窗口中窗体是无法直接关闭的,想要关闭须进程管理器结束进程方式关掉. 现在我们就来解决下这个问题. ******************* ...

  6. 前端必须了解的布局常识:普通流(normal flow)

    目录 一.概述 二.块级元素和内联元素 常见的块级元素 BFC 常见的行内元素 IFC 三.哪些情况会脱离普通流 浮动 绝对定位 固定定位 display:none 四.总结 五.参考资料 一.概述 ...

  7. winform窗体(五)——布局方式

    一.默认布局 ★可以加panel,也可以不加: ★通过鼠标拖动控件的方式,根据自己的想法布局.拖动控件的过程中,会有对齐的线,方便操作: ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整 ...

  8. 在c#中IO流读写操作

    1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...

  9. html/css基础篇——DOM中关于脱离文档流的几种情况分析

    所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版中拿走. ...

随机推荐

  1. C语言中常量

    C语言中常量 不具有数据类型的常量------宏常量 宏常量定义:用一个标识符号来表示的常量,又称为符号常量. 宏定义:  #define 标识符  字符串                 ----- ...

  2. python 之Twsited

    Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如网络协议,线程,数据库管理,网络操作,电子邮件等 事件驱动 一,注册事件 二,触发事件 自定义事件框架  event_fram.py # ...

  3. pdf转word

    一.刚需 pdf转word,这个需求肯定是有的.但是大家都知道,pdf是用来排版打印的,所以编辑起来会比较麻烦,所以,大家都会尝试将pdf的内容转成word,然后再进行编辑. 二.方法 1.用offi ...

  4. 多种方式实现在Android 手机上抓包

    一.素材来源 https://www.zhihu.com/question/20467503 二.方法整理 2.1 方式1:Packet Capture + HTTP Injector 使用于在手机端 ...

  5. Daily Scrum 10.28

    今天是周一,大家基本都结束了设计阶段转入代码实现的阶段,由于同志们感觉这部分的难度比较大,所以经过讨论延长了这部分的估计时间. 下面是今天的Task统计: 所有迭代的状态:

  6. C++复制对象时勿忘每一部分

    现看这样一个程序: void logCall(const string& funcname) //标记记录 { cout <<funcname <<endl; } cl ...

  7. JAVA程序设计 实验一

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353  姓名:李海空  学号:20135329 成绩:             指导教师:娄嘉鹏 ...

  8. Bash中各种以$开头的特殊变量的含义

    $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参 ...

  9. java中日历代码的实现

    import java.util.Scanner; com.lv.calendarWatch//包名 /* * 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 1.1900年1月 ...

  10. JavaMail邮件开发

    一.只带有纯文本的邮件 代码事例如下: package com.lyh.sendemail; import java.util.Properties; import javax.mail.Messag ...