C#窗体 流
流:(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#窗体 流的更多相关文章
- C#窗体 WinForm 对话框,流
一.对话框 ColorDialog:颜色选择控件 private void button1_Click(object sender, EventArgs e) { //显示颜色选择器 colorDia ...
- 2017年11月26日 C#流&&窗体对话框
C#流 在顶端加入using System.IO就可以使用流 StreamReder a = new StreamReder();//读取 前面什么都可以 = sr.ReadToEnd();//用法 ...
- 关于跨进程使用回调函数的研究:以跨进程获取Richedit中RTF流为例(在Delphi 初始化每一个TWinControl 对象时,将会在窗体 的属性(PropData)中加入一些标志,DLL的HInstance的值与HOST 进程的HInstance并不一致)
建议先参考我上次写的博文跨进程获取Richedit中Text: 获得QQ聊天输入框中的内容 拿到这个问题,我习惯性地会从VCL内核开始分析.找到TRichEdit声明的单元,分析TRichEdit保存 ...
- Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
* 创建图形化界面 * 1.创建frame窗体 * 2.对窗体进行基本设置 * 比如大小.位置.布局 * 3.定义组件 * 4.将组件通过窗体的add方法添加到窗体 * 5.让窗体显 ...
- 5.JAVA之GUI编程窗体事件
我们回顾下第三篇时的内容: 在3.JAVA之GUI编程Frame窗口中窗体是无法直接关闭的,想要关闭须进程管理器结束进程方式关掉. 现在我们就来解决下这个问题. ******************* ...
- 前端必须了解的布局常识:普通流(normal flow)
目录 一.概述 二.块级元素和内联元素 常见的块级元素 BFC 常见的行内元素 IFC 三.哪些情况会脱离普通流 浮动 绝对定位 固定定位 display:none 四.总结 五.参考资料 一.概述 ...
- winform窗体(五)——布局方式
一.默认布局 ★可以加panel,也可以不加: ★通过鼠标拖动控件的方式,根据自己的想法布局.拖动控件的过程中,会有对齐的线,方便操作: ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整 ...
- 在c#中IO流读写操作
1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...
- html/css基础篇——DOM中关于脱离文档流的几种情况分析
所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版中拿走. ...
随机推荐
- C语言中常量
C语言中常量 不具有数据类型的常量------宏常量 宏常量定义:用一个标识符号来表示的常量,又称为符号常量. 宏定义: #define 标识符 字符串 ----- ...
- python 之Twsited
Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如网络协议,线程,数据库管理,网络操作,电子邮件等 事件驱动 一,注册事件 二,触发事件 自定义事件框架 event_fram.py # ...
- pdf转word
一.刚需 pdf转word,这个需求肯定是有的.但是大家都知道,pdf是用来排版打印的,所以编辑起来会比较麻烦,所以,大家都会尝试将pdf的内容转成word,然后再进行编辑. 二.方法 1.用offi ...
- 多种方式实现在Android 手机上抓包
一.素材来源 https://www.zhihu.com/question/20467503 二.方法整理 2.1 方式1:Packet Capture + HTTP Injector 使用于在手机端 ...
- Daily Scrum 10.28
今天是周一,大家基本都结束了设计阶段转入代码实现的阶段,由于同志们感觉这部分的难度比较大,所以经过讨论延长了这部分的估计时间. 下面是今天的Task统计: 所有迭代的状态:
- C++复制对象时勿忘每一部分
现看这样一个程序: void logCall(const string& funcname) //标记记录 { cout <<funcname <<endl; } cl ...
- JAVA程序设计 实验一
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- Bash中各种以$开头的特殊变量的含义
$$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参 ...
- java中日历代码的实现
import java.util.Scanner; com.lv.calendarWatch//包名 /* * 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 1.1900年1月 ...
- JavaMail邮件开发
一.只带有纯文本的邮件 代码事例如下: package com.lyh.sendemail; import java.util.Properties; import javax.mail.Messag ...