C#读写文件总结

1、使用FileStream读写文件
文件头:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
读文件核心代码:
byte[] byData = new byte[100];
char[] charData = new char[1000];
try
{
FileStream sFile = new FileStream("文件路径",FileMode.Open);
sFile.Seek(55, SeekOrigin.Begin);
sFile.Read(byData, 0, 100); //第一个参数是被传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.
}
catch (IOException e)
{
Console.WriteLine("An IO exception has been thrown!");
Console.WriteLine(e.ToString());
Console.ReadLine();
return;
}
Decoder d = Encoding.UTF8.GetDecoder();
d.GetChars(byData, 0, byData.Length, charData, 0);
Console.WriteLine(charData);
Console.ReadLine();
写文件核心代码:
FileStream fs = new FileStream(文件路径,FileMode.Create);
//获得字节数组
byte [] data =new UTF8Encoding().GetBytes(String);
//开始写入
fs.Write(data,0,data.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
2、使用StreamReader和StreamWriter
文件头:
 
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
StreamReader读取文件:
StreamReader objReader = new StreamReader(文件路径);
      string sLine="";
      ArrayList LineList = new ArrayList();   
      while (sLine != null)
      {
        sLine = objReader.ReadLine();
        if (sLine != null&&!sLine.Equals(""))
          LineList.Add(sLine);
      }
            objReader.Close();
            return LineList;
StreamWriter写文件:
FileStream fs = new FileStream(文件路径, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
//开始写入
sw.Write(String);
 //清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();

===================================================================================

方式一:用FileStream

//实例化一个保存文件对话框
            SaveFileDialog sf = new SaveFileDialog();
            //设置文件保存类型
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
            //如果用户没有输入扩展名,自动追加后缀
            sf.AddExtension = true;
            //设置标题
            sf.Title = "写文件";
            //如果用户点击了保存按钮
            if(sf.ShowDialog()==DialogResult.OK)
            {
                //实例化一个文件流--->与写入文件相关联
                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
                //获得字节数组
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
                //开始写入
                fs.Write(data,0,data.Length);
                //清空缓冲区、关闭流
                fs.Flush();
                fs.Close();

            }

方式二:用StreamWriter

//实例化一个保存文件对话框
            SaveFileDialog sf = new SaveFileDialog();
            //设置文件保存类型
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
            //如果用户没有输入扩展名,自动追加后缀
            sf.AddExtension = true;
            //设置标题
            sf.Title = "写文件";
            //如果用户点击了保存按钮
            if (sf.ShowDialog() == DialogResult.OK)
            {
                //实例化一个文件流--->与写入文件相关联
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
                //实例化一个StreamWriter-->与fs相关联
                StreamWriter sw = new StreamWriter(fs);
                //开始写入
                sw.Write(this.textBox1.Text);
                //清空缓冲区
                sw.Flush();
                //关闭流
                sw.Close();
                fs.Close();
            }

string FileName = Guid.NewGuid().ToString() + ".txt"; //GUID生成唯一文件名
        StringBuilder ckpw = new StringBuilder("\"凭证输出\", \"V800\", \"001\", \"东风随州专用汽车有限公司\"," + "\"F89自由项16\", \"F90审核日期:\"");
        if (!FileIO.IsFolderExists(Server.MapPath("pzsc")))
            FileIO.CreaterFolder(Server.MapPath(""), "file://pzsc/");
        string filePath = Server.MapPath("pzsc") + "\\" + FileName;
        System.IO.StreamWriter sw = new System.IO.StreamWriter(filePath, false, Encoding.GetEncoding("GB2312"));//创建的时候需要指定编码格式,默认是UTF-8,中文显示乱码
        sw.WriteLine(ckpw.ToString());
        sw.Close();

方式三:用BinaryWriter

//实例化一个保存文件对话框
            SaveFileDialog sf = new SaveFileDialog();
            //设置文件保存类型
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
            //如果用户没有输入扩展名,自动追加后缀
            sf.AddExtension = true;
            //设置标题
            sf.Title = "写文件";
            //如果用户点击了保存按钮
            if (sf.ShowDialog() == DialogResult.OK)
            {
                //实例化一个文件流--->与写入文件相关联
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
                //实例化BinaryWriter
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(this.textBox1.Text);
                //清空缓冲区
                bw.Flush();
                //关闭流
                bw.Close();
                fs.Close();
            }

C#缓存流示例------>用缓存流复制文件

C#文件处理操作必须先导入命名空间:using System.IO;

背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma

在按钮的Click事件中添加如下代码:

private void button1_Click(object sender, EventArgs e)
        {
            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
            //创建一个字节数组,作为两者之间的媒介
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
            byte[] data = new byte[1024];
            //创建两个缓冲流,与两个文件流相关联
            BufferedStream bs = new BufferedStream(fs);
            BufferedStream bs2= new BufferedStream(fs2);
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
            //即-->那个人没有苹果往篮子里面放了
            while(fs.Read(data,0,data.Length)>0)
            {
                fs2.Write(data,0,data.Length);
                fs2.Flush();
            }
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
            fs.Close();
            fs2.Close();
        }

C#内存流示例----->用内存流来读取图片
C#文件处理操作必须先导入命名空间:using System.IO;

背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:

private void pictureBox1_Click(object sender, EventArgs e)
        {
            //实例化一个打开文件对话框
            OpenFileDialog op = new OpenFileDialog();
            //设置文件的类型
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:
            if(op.ShowDialog()==DialogResult.OK)
            {
                //清空文本
                this.label1.Text = "";
                //实例化一个文件流
                FileStream fs = new FileStream(op.FileName, FileMode.Open);
                //把文件读取到字节数组
                byte[] data = new byte[fs.Length];
                fs.Read(data, 0, data.Length);
                fs.Close();

                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
                MemoryStream ms = new MemoryStream(data);
                //设置图片框 pictureBox1中的图片
                this.pictureBox1.Image = Image.FromStream(ms);
            }

        }

转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/03/12/1409417.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术人必备的碎片化时间学习工具

工作、生活节奏超快的今天,想要不断提升自我,碎片化阅读学习是你最佳的选择,如果你有一颗学习的心,那这些学习型的公众号,绝对会让你受益匪浅。 小编为你精选了技术领域几个精品微信订阅号,涵盖了时下最热门…

python gui界面启动脚本、点击按钮执行脚本_如何使用PyQt在按钮单击上调用python脚本...

我使用PyQt4创建了一个带有按钮的表单.在此按钮上,我想调用另一个如下所示的python脚本: File1.py: import sys from PyQt4 import QtCore, QtGui from file1_ui import Ui_Form class MyForm(QtGui.QMainWindow): def __init__(self, parentNone): QtGu…

微型计算机键盘上的shift键 汉语译为,PC计算机键盘上的Shift键称为什么键

满意答案shuzhongle2014.02.25采纳率:56% 等级:12已帮助:7306人朋友,下面是我的答案,希望可以帮得到你!Shift键:上档转换键,也可用于中英文转换。当然Shift键并不仅仅只是这些作用,下面介绍下…

Dotnet中Span, Memory和ReadOnlySequence之浅见

过年啦,写个短点的。同时,提前给大家拜个年。总有小伙伴们跑过来讨论关于Span和Memory的使用,眼瞅是最近关于Span的文章有点多,看飞了。今天写这个,就是往回拉一拉。写之前,先声明一下。这些内容是我自己使…

睹物可否不思人

早上送女儿去兴趣班练舞蹈 顺便去超市买菜 因前阵生病的缘故 休息时都没有做饭 不知道买菜还会勾起我的痛楚 站在那里等着宰鱼 可视线被花甲吸引 注目良久 睹物思人 生活中的细细碎碎 都能令我浮想联翩 一句话 一处景 都能想起你的片段 回忆里有丝丝的甜 回忆里有阵阵的痛 突然…

华为的型号命名规则_华为最实惠5G手机来了!畅享Z 5G宣布:5月24日发

5月18日消息,华为宣布畅享系列首款5G手机畅享Z 5G将于5月24日发布。畅享Z系列的到来将使华为在千元市场实现5G覆盖,这也将成为华为价格最低的5G手机系列,值得期待。目前关于畅享Z的细节还很少,有消息称代号为Teller的5G新机隶属于…

程序员又背锅了!虾米音乐代码注释惊现“穷逼vip”

11 月 19 日,在 V2EX 社区的技术版一名网友发布了一篇名为《虾米 mac 客户端发现个好玩的注释》的帖子,文中贴出了阿里巴巴旗下虾米音乐 Mac 版客户端的代码,引发了网友争议。发帖人称,虾米音乐客户端的程序员竟然称一些短期VIP客…

python list转dict_python中将list转为dict

最近在项目中经常遇到将list转为dict形式,之前都只会用for循环,取出list中的每个值,update到dict中。 示例1 scrabble_scores [(1, "E A O I N R T L S U"), (2, "D G"), (3, "B C M P"), (4, "F H V W …

计算机无法安装小丸工具箱,小丸工具箱电脑版

小丸工具箱电脑版是一款可以压制H264AAC视频的图形界面工具,内核是x264、neroaac、mp4box等开源软件。小丸工具箱电脑版能够封装mp4或抽取mp4的音频或视频,压制视频中的音频。它的功能非常丰富,是属于实用的视频压制器!小丸工具箱&#xff0c…

一个简单的dotnet tool

dotnet tool对应的工具,本质上是一个控制台应用,在调用这个应用时,会根据传入的参数,执行应用内部的逻辑。关于dotnet tool命令使用,参照https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-tool-install下面…

内存和显存_【硬件资讯】显存再升级?Nvidia新卡实锤GDDR6X!显存大升级能否带来性能提升??...

新闻1:美光泄密 RTX 3090显卡用上GDDR6X显存:带宽堪比HBM2NVIDIA新一代显卡越来越近了,8月31日就有可能公布重大消息,安培GPU核心的RTX 30系列最快下个月就能买到。首发的第一波肯定是高端卡,除了RTX 3080、RTX 3080 T…

Web 2.0 编程思想:16条法则

原文:Thinking in Web 2.0: Sixteen Ways 作者:Dion Hinchcliffe URL:http://sd.csdn.net/n/20060518/90603.html 1、在你开始之前,先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户,请清晰的构思你的目标。就像“我…

神舟笔记本电源管理软件_笔记本电脑长期不用充不上电了?原来问题就出在这儿...

也许有很多使用笔记本电脑的用户,都会遇到这样一种情况:笔记本电脑长期没有使用,导致电池充不了电的现象。遇到这样一种情况该如何进行解决呢?这确实有点难倒很多用户了,难道电池坏了,需要重新更换新的笔记…

浅析PageRank算法

机器学习很早就对Google的PageRank算法很感兴趣,但一直没有深究,只有个轮廓性的概念。前几天趁团队outing的机会,在动车上看了一些相关的资料(PS:在动车上看看书真是一种享受),趁热打铁&#xf…

小学计算机课教学设计,小学信息技术教学设计三篇

【导语】教案是教师为顺利而有效地开展教学活动,根据课程标准,教学大纲和教科书要求及学生的实际情况,以课时或课题为单位,对教学内容、教学步骤、教学方法等进行的具体设计和安排的一种实用性教学文书。无忧考网准备了以下内容&a…

Happy 牛 Year!牛年dotnet云原生技术趋势

首先给大家拜个年,祝大家:新年快乐,牛年大吉,牛转乾坤,一往无前!2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消&a…

centos7python命令_02.将python3作为centos7的默认python命令

博客为日常工作学习积累总结:由于个人兴趣爱好对python有了解:1.安装Python3:参考博客:https://zhuanlan.zhihu.com/p/47868341安装依赖包:yum -y install zlib zlib-develyum -y install bzip2 bzip2-develyum -y ins…

SELECT语句“加锁选项”功能说明

阅读全文:http://www.cckan.net/forum.php?modviewthread&tid50 SELECT 语句中“加锁选项”的功能说明SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实…

windows传真和扫描由于不能访问您的文档_扫描识别工具Dynamic Web TWAIN全年最低价来了!错过再等一年...

Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者ShareP…

计算机二级链表,计算机二级c语言上机考试——结构体与链表(3页)-原创力文档...

1:某学生的记录由学号、8门课程成绩和平均分组成, 学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。void fun(STREC *a){int i;a&…