C# File流操作
#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流操作的更多相关文章
- io流操作大全
JAVA 中的IO流 一.流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部 ...
- Stream 流操作
Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概 ...
- IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
- C++流操作之fstream
在Windows平台对文件进行存取操作可选的方案有很多,如果采用纯C,则需要用到File*等,当然也可以直接调用Windows API来做:如果采用C++,首先想到的就是文件流fstream.虽然在C ...
- JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律
JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这 ...
- (十四)QFile操作,QByteArray,文件流操作,QTextStream,QDataStream,QFileInfo, QIODevice
QFile f 1.readall #include "widget.h" #include "ui_widget.h" #include <QFileD ...
- Java IO流操作汇总: inputStream 和 outputStream【转】
我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...
- java字符流操作flush()方法及其注意事项
java字符流操作flush()方法及其注意事项 flush()方法介绍 查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 ...
- Hadoop基础-通过IO流操作HDFS
Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...
随机推荐
- filter 静态资源
package com.itheima.web.filter; import java.io.IOException; import javax.servlet.Filter; import java ...
- 数组和json的相互转换
json_encode() <?php /*****一维数组*********/ //有键 $arr = array( 'a'=>1, 'b'=>2, 'c'=>3, ); $ ...
- linux机械磁盘服务器分区方案
/boot分区:用来存放与linux系统启动有关的程序,比如启动引导装载程序等,建议大小为100MB /usr分区:用来存放linux系统中的应用程序,其相关数据较多,建议大于3GB. /var分区: ...
- HDU 5313——Bipartite Graph——————【二分图+dp+bitset优化】
Bipartite Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- Bootstrap table使用知识-转
http://www.cnblogs.com/landeanfen/p/5005367.html 官方文档:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ ...
- C# Uploadify 文件上传组件的使用
一.页面的构建 1.要引用的JS和CSS <link href="../css/jquery-ui.css" rel="stylesheet" type= ...
- 跨页面传值之QueryString
跨页面传值常用方法 1.QueryString 2.Form-post控件传递 3.Cookies传递 4.Application传递 5.Session传递(灵活强大) 1.query传值 http ...
- Jms学习篇一:JMS介绍
1.JMS介绍: JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API JMS是一种与厂商无关的 API,用来访问 ...
- H5分享到微信好友朋友圈QQ好友QQ空间微博二维码
这是分享按钮: <button onclick="call()">通用分享</button> <button onclick="call(' ...
- android startActivityForResult()
举例说我想要做的一个事情是,在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Act ...