




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章文件操作与管理
本章主要内容介绍
8.1System.IO命名空间
8.2文件流类FileStream
8.3文件读写例子
8.4读写二进制文件
8.5读写内存流
8.6本章小结CONTENT本章学习目标:了解System.IO命名空间掌握读写文本文件的方法掌握向文件读写二进制数据的方法掌握读写内存流的方法8.1System.IO命名空间另存为.xls文件另存为.bmp文件另存为.txt文件以字节形式向磁盘写数据通常称为字节流。存储在磁盘上的字节集合称为文件8.1System.IO命名空间File类的常用方法静态方法Move文件剪切Delete文件删除Copy文件复制CreateText创建文件OpenText打开文件文本Open打开文件8.1System.IO命名空间试一试:把C:\WinNT\Win.INI文件拷贝到C:\下的代码,怎么写?usingSystem.IO;……privatevoidbutton1_Click(objectsender,EventArgse){stringpath=@"C:\WINDOWS\IE4ErrorLog.txt";stringtarget=@"c:\1.txt";if(!File.Exists(path)){MessageBox.Show("对不起,未发现路径文件!");}else{
File.Copy(path,target);MessageBox.Show("复制成功!");}}8.1System.IO命名空间更改代码:此次我们通过更换FileInfo类执行同样的动作;usingSystem.IO;……privatevoidbutton1_Click(objectsender,EventArgse){stringpath=@"C:\WINDOWS\IE4ErrorLog.txt";stringtarget=@"c:\1.txt";FileInfomyfile=newFileInfo(path);if(!myfile.Exists){MessageBox.Show("对不起,未发现路径文件!");}else{
myfile.CopyTo(target);MessageBox.Show("复制成功!");}}8.1System.IO命名空间FileInfo类和File类两者都提供对文件类似的操作File为静态类,直接使用;FileInfo需要实例化后才能使用。从性能上考虑,如果你要多次操作文件,不管是针对相同的,还是不同的,请使用FileInfo,说白了,单打独斗File最棒,群殴则首推FileInfo。每次通过File类调用某个方法时,都要占用一定的cpu,而FileInfo类只在创建FileInfo对象时执行一次安全检查。
8.2读写文本文件System.IO命名空间继承类
静态方法CreateText(stringFilePath)OpenText(stringFilePath)Open(stringFilePath,FileMode)Create(stringFilePath)OpenRead(stringFilePath)AppendText(stringFilePath)FileStream类File类8.2读写文本文件FileStream构造函数FileStream已重写构造函数FileStream(stringFilePath,FileMode)FileStream(stringFilePath,FileMode,FileAccess)FileStream(stringFilePath,FileMode,FileAccess,FileShare)在构造函数中使用的FilePath,FileMode,FileAccess,FileShare分别是指:使用指定的路径、创建模式、读/写权限和共享权限
FileMode和FileShare,FileAccessFileModeAppendCreateCreateNewOpenOpenOrCreateTruncateFileShareNoneReadWriteReadWrite…………FileStreamfstream=newFileStream("Test.cs",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);………FileAccessReadWriteReadWriteFilePath:将封装的文件的相对路径或绝对路径
8.3文件读写例子4-1
——创建fileoption类文件第一步:建立CS文件,并准备填写关于文件操作的各种方法具体代码见下(1)第二步:建立窗体文件,样式如下图所示具体代码见下(2)8.3文件读写例子4-2(课堂测验)使用文件操作类文件完成左侧编辑任务。8.4读写二进制文件要使用BinaryReader和BinaryWriter类这两个对象都需要在FileStream上创建FileStreamfilestream=newFileStream(Filename,FileMode.Create);BinaryWriterobjBinaryWriter=newBinaryWriter(filestream);二进制文件读写对象Close()Read()ReadDecimal()ReadByte()ReadInt16()ReadInt32()ReadString()Close()Flush()Write()BinaryReaderBinaryWriter写二进制文件案例publicbyte[]GetFileBytes(stringFilename){if(Filename=="")returnnull;try{FileStreamfileStream=newFileStream(Filename,FileMode.Open,FileAccess.Read);BinaryReaderbinaryReader=newBinaryReader(fileStream);byte[]fileBytes=binaryReader.ReadBytes((int)fileStream.Length);binaryReader.Close();fileStream.Close();returnfileBytes;}catch{returnnull;}}///<summary>//////<summary>/*********************************************************方法名:GetFileBytes**输入参数:Filename:文件名称;****输出参数:**返回值:byte[]二进制流**创建人:钱哨**创建日期:08-7-9**描述:将读取的文件转化成为二进制流。*******************************************************////<summary>///</summary>///<paramname="Filename"></param>///<returns></returns>写二进制文件案例publicboolWriteFileBytes(stringTargetFilename,byte[]fileBytes){boolk=true;if(TargetFilename!=""&&fileBytes.Length!=0){try{FileStreamfileStream=newFileStream(TargetFilename,FileMode.OpenOrCreate,FileAccess.Write);BinaryWriterbinaryWriter=newBinaryWriter(fileStream);binaryWriter.Write(fileBytes);binaryWriter.Flush();binaryWriter.Close();fileStream.Close();}catch{k=false;}}else{k=false;}returnk;}///<summary>//////<summary>/*********************************************************方法名:WriteFileBytes**输入参数:TargetFilename:目标文件名称;****输出参数:**返回值:byte[]二进制流**创建人:钱哨**创建日期:08-7-9**描述:将读取的文件转化成为二进制流。*******************************************************////<summary>///</summary>///<paramname="Filename"></param>///<returns></returns>写二进制文件案例privatevoidbutton1_Click(objectsender,EventArgse){MyFileOptionmyof=newMyFileOption();stringtargetpic=@"c:\2.jpg";stringsourcepic=@"c:\1.jpg";byte[]sourcebyte=myof.GetFileBytes(sourcepic);if(sourcebyte.Length==0){MessageBox.Show("并未从源文件读取任何二进制流!","错误",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
boolk=myof.WriteFileBytes(targetpic,sourcebyte);
if(k)
{
MessageBox.Show("写二进制流成功!","成功",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
MessageBox.Show("写二进制流发生意外错误!","错误",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
}8.5读写内存流抽象类MemoryStreamBufferedStream对内存而不是对磁盘进行数据读写减少了对临时缓冲区和文件的需要
对缓冲区进行数据读写允许操作系统创建自己的缓冲区输入/输出效率高且速度更快在网络通讯的时候经常会使用到Stream类BufferedStream构造函数publicBufferedStream(StreamStName);publicBufferedStream(StreamStName,intbsize);默认缓冲区大小为4096缓冲区大小通过缓冲区交换数据2-1publicstaticvoidMain(){
Console.WriteLine(“请输入文件名:");
stringname=Console.ReadLine();
Console.WriteLine(“请输入备份文件名:");
stringbackup=Console.ReadLine();
if(File.Exists(name)) {
StreaminputStream=File.OpenRead(name);
StreamoutputStream=File.OpenWrite(backup);
BufferedStreambufferedInput=new BufferedStream(inputStream);
BufferedStreambufferedOutput=new BufferedStream(outputStream);Stream和
BufferedStream的实例通过缓冲区交换数据2-2 byte[]buffer=newByte[sizeBuff];
intbytesRead;
while((bytesRead=
bufferedInput.Read(buffer,0,sizeBuff))>0) {
bufferedOutput.Write(buffer,0,bytesRead); }
Console.WriteLine();
Console.WriteLine("给定备份的文件已创建");
bufferedOutput.Flush();
bufferedInput.Close();
bufferedOutput.Close();
}else
{
Console.WriteLine("文件不存在");
}}通过缓冲区进行读写刷新并关闭BufferStream示例应用程序
8-1学生详细信息用户界面学生文件存储信息用户界面//声明变量privateFileStreamfstream;publicfrmStudentEntry()//Constructor构造函数{
InitializeComponent();
fstream=File.Create("C:\\Student.txt");}privatevoidbtnSave_Click(objectsender,System.EventArgse){//准备将文本写入文件stringdata;data=txtFirstName.Text+""+txtLastName.Text+""+txtClass.Text;
data+=""+txtGrade.Text+"\n";Byte[]info=new
UTF8Encoding(true).GetBytes(data);//写数据
fstream.Write(info,0,info.Length);//刷新并关闭FileStreamfstream.Flush();fstream.Close();frmStudentFileobjfrmStudentFile=newfrmStudentFile();objfrmStudentFile.Show();}将数据写入文本文件刷新并关闭FileStream示例应用程序
8-2privatevoidfrmStudentFile_Load(objectsender,System.EventArgse){FileStreamfstream=File.OpenRea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃省嘉峪关市胜利路小学招聘公益性岗位人员考前自测高频考点模拟试题及答案详解(各地真题)
- 2025江西吉安市七叶荆文化旅游有限公司招聘安排考前自测高频考点模拟试题及答案详解(必刷)
- 2025年烟台市卫生健康委员会所属事业单位卫生类岗位公开招聘工作人员(385人)考前自测高频考点模拟试题及答案详解(历年真题)
- 2025湖北恩施州宣恩狮子关旅游开发有限公司招聘7人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025江苏无锡市第二人民医院编外员工招聘80人模拟试卷及参考答案详解
- 中国低空经济+巡检行业发展环境、供需态势及投资前景分析报告(智研咨询发布)
- 智研咨询发布-2025年电熨斗行业市场竞争格局、行业政策及需求规模预测报告
- 2025年中国基因编辑行业市场运行态势、市场规模及发展趋势研究报告
- 2025河北秦皇岛市抚宁区为部分区直单位选调全额事业人员12人模拟试卷及答案详解(考点梳理)
- 滑滑梯课件教学
- 2025年部编版新教材三年级上册《9.犟龟》教案
- 2024年南宁市招聘中小学教师笔试真题
- 养老院安全生产培训
- 老员工带新员工的培训制度
- 高标准农田建设项目风险评估与应对措施
- 水浒传每回内容梗概
- 人教版初中九年级全册英语单词表(完整版)
- 工地试验室安全培训内容
- 合同车辆质押合同
- 2024版数据中心基础设施运维与维保服务合同2篇
- 增材制造课件
评论
0/150
提交评论