#region 文件读出
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog(); if (!string.IsNullOrEmpty(ofd.FileName))
{
//1.创建1个文件流对象,并给这个文件流对象指定操作的文件(路径),还有指定操作方式
FileStream stream = new FileStream(ofd.FileName, FileMode.Open);
//2.准备1个Byte数组,以供文件流对象读取数据并放到这个数组中
byte[] buffer = new byte[1024 * 1024];
//3.调用文件流的读数据方法,将读出来的字节放入buffer数组中
stream.Read(buffer, 0, buffer.Length);
//4.将字节buffer数组已指定的编码转换为字符串【Encoding.Default.GetString(buffer);】
string content = Encoding.Default.GetString(buffer);
//5.关闭文件流
stream.Dispose(); txtContent.Text = content;
}
}
#endregion
        #region 文件流写入==保存
private void button2_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
DialogResult res = sfd.ShowDialog();//弹出1个文件保存窗口
if (res == DialogResult.OK)
{ FileStream stream = new FileStream(sfd.FileName, FileMode.Create); //将字符串以指定的编码转换为字节数组byte[](二进制)
byte[] buffer = Encoding.UTF8.GetBytes(txtContent.Text); stream.Write(buffer, 0, buffer.Length); stream.Dispose();
}
}
#endregion
        #region 拷贝操作
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
DialogResult res = ofd.ShowDialog();
if (res == DialogResult.OK)
{
if (!string.IsNullOrEmpty(ofd.FileName))
{
//1.创建读入文件流对象
FileStream streamRead = new FileStream(ofd.FileName, FileMode.Open);
//2.创建1个字节数组,用于接收文件流对象读操作文件值
byte[] data = new byte[1024 * 1024];//1M
int length = 0;
SaveFileDialog sfd = new SaveFileDialog();
DialogResult sres = sfd.ShowDialog();
if (sres == DialogResult.OK)
{
if (!string.IsNullOrEmpty(ofd.FileName))
{
FileStream streamWrite = new FileStream(sfd.FileName, FileMode.Create);
do
{
//3.文件流读方法的参数1.data-文件流读出数据要存的地方,2. 0--从什么位置读,3. data.Length--1次读多少字节数据
//3.1 Read方法的返回值是一个int类型的,代表他真实读取 字节数据的长度,
length = streamRead.Read(data, 0, data.Length);//大文件读入时候,我们定义字节长度的可能会有限,如果文件超大,要接收文件流对象的Read()方法,会返回读入的实际长度 //加密 和解密
for (int i = 0; i < length; i++)
{
data[i] = (byte)(255 - data[i]);
}
streamWrite.Write(data, 0, length);
} while (length == data.Length); //如果实际写入长度等于我们设定的长度,有两种情况1.文件正好是我们设定的长度2.文件超大只上传了截取的一部分 }
}
}
}
}
#endregion

C# File流操作的更多相关文章

  1. io流操作大全

    JAVA 中的IO流 一.流的概念        流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部 ...

  2. Stream 流操作

     Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概 ...

  3. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  4. C++流操作之fstream

    在Windows平台对文件进行存取操作可选的方案有很多,如果采用纯C,则需要用到File*等,当然也可以直接调用Windows API来做:如果采用C++,首先想到的就是文件流fstream.虽然在C ...

  5. JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律

    JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这 ...

  6. (十四)QFile操作,QByteArray,文件流操作,QTextStream,QDataStream,QFileInfo, QIODevice

    QFile f 1.readall #include "widget.h" #include "ui_widget.h" #include <QFileD ...

  7. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  8. java字符流操作flush()方法及其注意事项

    java字符流操作flush()方法及其注意事项   flush()方法介绍 查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 ...

  9. Hadoop基础-通过IO流操作HDFS

    Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...

随机推荐

  1. 记录: Win10+Ubuntu18.04双系统安装

    在重装windows系统的时候顺便将ubuntu也重装了. window 10 安装 制作USB启动盘 到"微软中国下载中心"(http://www.microsoft.com/z ...

  2. cloudermanager安装过程中出现W:GPG error错误 http://ppa.launchpad.net.trusty Release **** 4DF9B28CA252A784(图文详解)

    不多说,直接上干货! 问题详情  解决办法 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4DF9B28CA252A784 ...

  3. Ubuntu以及CentOS7修改ssh端口号详细步骤

    1.Ubuntu修改ssh端口号步骤: 1.修改sshd.config文件.执行vim etc/ssh/sshd_config.增加上我们需要增加的ssh的端口号.图例增加了5309的端口号. ESC ...

  4. log4j整理

    <meta http-equiv="refresh" content="1"/> # log4j日志组件 #- SLF4J,一个**通用日志接口** ...

  5. HDU 1257——最少拦截系统——————【LIS变型题】

    最少拦截系统 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  6. iis6、iis7、apache设置mime类型

    1.IIS6添加方法. 打开iis,展开网站,右键要设置的站点--属性.找到“http头”选项卡--mime类型 进行设置添加. 截图以.ipa mime类型举例. 2.IIS7(iis7.5.iis ...

  7. continue break return

    ontinue: 可以让程序跳过,continue关键字之后的语句,回到while循环的第一行命令 break: 让程序完全跳出循环,结束while循环的执行 return: 从查询或过程中无条件退出 ...

  8. tomcat一个IP绑定多个域名,不同域名访问不同的应用

    修改conf文件夹下面的server.xml的Engine里面的内容即可原始内容如下: …… <Engine name="Catalina" defaultHost=&quo ...

  9. [转]Tomcat优化之内存、并发、缓存

    1.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数. JAVA_OPTS ...

  10. 【Linux】安装配置Tomcat7

    第一步:下载Tomcat安装包 下载地址:https://tomcat.apache.org/download-70.cgi [root@localhost ~]# wget http://mirro ...