[ASP.NET学习笔记之一]ASP.NET中文件操作

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

ASP.NET中文件操作

System.IO

Directory :用于创建、移动和枚举通过目录和子目录

File :用于创建、复制、删除、移动和打开文件

Path:对包含文件或目录路径信息的String 实例执行操作

StreamReaderStreamWriter:以一种特定的编码读写字符

 

关于ASP.NET中的文件处理首先要了解两个概念:文件和流    

  • 文件:存储在介质上的永久数据的有序集合,它是进行数据读写操作的基本对象。每个文件都拥有一些基本属性,如文件名、存放路径、访问权限等。    
  • 流:提供了连续的字节流存放空间,它也是数据读写操作的基本对象。流中存放的数据空间可以是不连续的,甚至可以分布在多个地方,注意流是在内存中的。

File

提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream

对象。

File 类的所有方法都是静态的,因而无需具有文件的实例就可被调用

常用方法

AppendText:创建一个SteamWriter对象,用于在指定文件的末尾添加新的内容。

Copy:复制指定文件

Move:移动文件

Delete:删除文件。

Exist:判断指定文件是否存在

Open:以指定的方式、权限打开指定文件

OpenRead:以只读方式打开指定文件

OpenText:打开文本文件,返回流

OpenWrite:以读写方式打开指定文件

Cteate:创建一个指定文件

CreateText:创建一个文本文件

【示例代码】

创建

//建立StreamWriter为写做准备

StreamWriter rw = File.CreateText(Server.MapPath(".")+"//CreateText.txt");

//使用WriteLine写入内容

rw.WriteLine("使用File.CreateText 方法");

rw.WriteLine("返回StreamWriter流,利用这个流进行写入。");

//将缓冲区的内容写入文件

rw.Flush();

//关闭rw对象

rw.Close();

 

打开

//打开文本文件

string strFileName = FileSelect.PostedFile.FileName;

if(Path.GetFileName(strFileName)=="")

     return;

StreamReader sr = File.OpenText(strFileName);

StringBuilder output = new StringBuilder();

string rl;

while((rl=sr.ReadLine())!=null)

{

     output.Append(rl+"<br>");

}

lblFile.Text = output.ToString();

sr.Close();

 

//拷贝文件

File.Copy(OrignFile,NewFile);

//删除文件

File.Delete(delFile);

//移动文件

File.Move(OrignFile,NewFile);

FileStream

FileStream 对于在文件系统上读取和写入文件非常有用, FileStream 缓存输入和输出,以获得更好的性能。

FileStream 类能够以同步或异步这两种模式之一打开文件,而且对同步方法(Read Write)和异步方法(BeginRead BeginWrite)有显著的性能影响。

Windows系统中,如果输入输出数据小于64KB,则采用同步模式性能较好;而当大于

64KB时,则最好采用异步模式

【示例代码】

FileStream fs = new FileStream(Server.MapPath(".")+"//FileStreamCreateText.txt",FileMode.Create,FileAccess.Write);

//建立StreamWriter为写做准备。还可以设置编码。这是前面File类打开文件所没有的(这里读中文编码会变成乱码)

StreamWriter rw = new StreamWriter(fs,Encoding.Default);

//使用WriteLine写入内容

rw.WriteLine("曾经有一份真挚的爱情放在我的面前。");

rw.WriteLine("而我没有珍惜,当我失去的时候,我才追悔莫及。");

rw.WriteLine("人世间最大的痛苦莫过于此,如果上天给我一个再来一次的机会。");

rw.WriteLine("我会对那个女孩说三个字:/"我爱你。/"");

rw.WriteLine("如果非要在这份爱上加一个期限的话,我希望是一万年。");

//将缓冲区的内容写入文件

rw.Flush();

//关闭rw对象

rw.Close();

fs.Close();

 

fs = new FileStream(Server.MapPath(".")+"//FileStreamCreateText.txt",FileMode.Open,FileAccess.Read);

//打开文本文件

StreamReader sr = new StreamReader(fs,Encoding.Default);

StringBuilder output = new StringBuilder();

string rl;

while((rl=sr.ReadLine())!=null)

{

     output.Append(rl+"<br>");

}

lblFile.Text = output.ToString();

sr.Close();

fs.Close();

string OriginFile = FileSelect.PostedFile.FileName;

string NewFile     = tbDes.Text +"//"+Path.GetFileName(OriginFile);

 

 

//建立两个FileStream对象

FileStream fsOF = new FileStream(OriginFile,FileMode.Open,FileAccess.Read);

FileStream fsNF = new FileStream(NewFile,FileMode.Create,FileAccess.Write);

 

//建立分别建立一个读写类

BinaryReader br = new BinaryReader(fsOF);

BinaryWriter bw = new BinaryWriter(fsNF);

 

//将读取文件流指针指向流的头部

br.BaseStream.Seek(0,SeekOrigin.Begin);

//将写入文件流指针指向流的尾部

bw.BaseStream.Seek(0,SeekOrigin.End);

 

while(br.BaseStream.Position < br.BaseStream.Length)

{

     //br流中读取一个Byte并马上写入bw

     bw.Write(br.ReadByte());

}

 

br.Close();

bw.Close();

//操作后判断源文件是否存在

 

if(File.Exists(NewFile))

{

     lbInfo.Text = "附件复制成功!";

}

else

{

     lbInfo.Text = "文件复制失败!";

}

DirectoryInfoFileInfo

DirectoryFile 类的所有方法都是静态的,因而无需具有目录的实例就可被调用。DirectoryInfo FileInfo)类只包含实例方法。

Directory File)类的静态方法对所有方法执行安全检查。如果打算多次重用一个对象,请考虑改用DirectoryInfoFileInfo)的相应实例方法,因为安全检查并不总是必要的。

【示例代码】

string strCurrentDir;

//初始化一些数据

if(!Page.IsPostBack)

{

     strCurrentDir = Server.MapPath(".");

     lblCurrentDir.Text = strCurrentDir;

     tbCurrentDir.Text = strCurrentDir;

}

else

{

     strCurrentDir = tbCurrentDir.Text;

     tbCurrentDir.Text = strCurrentDir;

     lblCurrentDir.Text = strCurrentDir;

}

 

FileInfo fi;

DirectoryInfo di;

TableCell td;

TableRow  tr;

 

/*

     设定Table中的数据

     首先搞定第一行

*/

tr = new TableRow();

 

td = new TableCell();

td.Controls.Add(new LiteralControl("<img src='name.gif'>"));

tr.Cells.Add(td);

 

td = new TableCell();

td.Controls.Add(new LiteralControl("<img src='size.gif'>"));

tr.Cells.Add(td);

 

td = new TableCell();

td.Controls.Add(new LiteralControl("<img src='lastmodify.gif'>"));

tr.Cells.Add(td);

 

tbDirInfo.Rows.Add(tr);

 

string FileName;            //文件名称

string FileExt;             //文件扩展名

string FilePic;             //文件图片

long FileSize;              //文件大小

DateTime FileModify;        //文件更新时间

 

DirectoryInfo dir = new DirectoryInfo(strCurrentDir);

foreach(FileSystemInfo fsi in dir.GetFileSystemInfos())

{

     FilePic = "";

     FileName = "";

     FileExt = "";

     FileSize = 0;

 

     if(fsi is FileInfo)

     {

         //表示当前fsi是文件

         fi = (FileInfo)fsi;

         FileName = fi.Name;

         FileExt       = fi.Extension;

         FileSize = fi.Length;

         FileModify    = fi.LastWriteTime;

         //通过扩展名来选择文件显示图标

         switch(FileExt)

         {

              case ".gif":

                   FilePic = "gif.gif";

                   break;

              default:

                   FilePic = "other.gif";

                   break;

         }

         FilePic = "<img src='"+FilePic+"' width=25 height=20>";

     }

     else

     {

         //当前为目录

         di = (DirectoryInfo)fsi;

         FileName = di.Name;

         FileModify    = di.LastWriteTime;

         FilePic = "<img src='directory.gif' width=25 height=20>";

     }

 

     //组建新的行

     tr = new TableRow();

 

     td = new TableCell();

     td.Controls.Add(new LiteralControl(FilePic+"&nbsp;"+FileName));

     tr.Cells.Add(td);

 

     td = new TableCell();

     td.Controls.Add(new LiteralControl(FileSize.ToString()));

     tr.Cells.Add(td);

 

     td = new TableCell();

     td.Controls.Add(new LiteralControl(FileModify.ToString()));

     tr.Cells.Add(td);

 

     tbDirInfo.Rows.Add(tr);

}

 

 

protected bool bExist = false;

public string strCurPath = "c:";

public int nPost = 0;

 

protected void btnFind_Click(object sender, System.EventArgs e)

{

     try

     {

         if(tbInput.Text.Trim()=="")

         {

              lbPath.Text = "文件名为空!";

              return;

         }

         string[] drives = System.IO.Directory.GetLogicalDrives();

 

         foreach (string str in drives)

         {

             

              if(ProcessDirectory(str))

                   break;

         }

         if(!bExist)

              lbPath.Text = "不存在此文件!";

     }

     catch (System.IO.IOException)

     {

         Response.Write("I/O错误!");

     }

     catch (System.Security.SecurityException)

     {

         Response.Write("没有访问权限!");

     }

 

}

public bool  ProcessDirectory(string targetDirectory)

{

     try

     {

         // Process the list of files found in the directory

         string [] fileEntries = Directory.GetFiles(targetDirectory);

         foreach(string fileName in fileEntries)

         {

              if(ProcessFile(fileName))

                   return true;

             

         }

 

         // Recurse into subdirectories of this directory

         string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);

         foreach(string subdirectory in subdirectoryEntries)

         {

              if(ProcessDirectory(subdirectory))

                   return true;

         }

         return false;

     }

     catch(Exception)

     {

         return false;

     }

}

public bool ProcessFile(string strFileName)

{

     if(Path.GetFileName(strFileName).ToLower()==tbInput.Text.Trim().ToLower())

     {

         lbPath.Text = strFileName.ToLower();

         bExist=true;

         return true;

     }

     else

         return false;

} 

ASP.NETASP相比,主要有哪些进步? 就像你现在不会用大哥大一样,ASP.NET比老ASP:✅ 快得多 - 编译执行比解释快✅ 写起来爽 - 不用混写HTML和代码✅ 更安全 - 自带防护盾✅ 好维护 - 像整理好的衣柜找东西快✅ 功能多 - 各种现成控件直接用现在连ASP.NET都升级到ASP.NET Core了,性能更强还能跨平台,老ASP早该退休啦! 阅读详情

相关推荐

ASP.NET在线打开Office 文件实例

ASP.NET在线打开Office 文件实例 ,简单修改一下参数就行了。

asp.net 文件操作

ASP.NET中,文件处理的整个过程都是围绕着System.IO 这个名称空间展开的。这个名称空间中具有执行文件读、写所需要的类。Directory用于创建、移动和枚举通过目录和子目录,File用于创建、复制、删除、移动和打开文件,Path对包含文件或目录路径信息的String实例执行操作。下面介绍asp.net中如何对文件进行操作 一、文件操作常用的相关类   类名 作

zhuyu19911016520 3422

ASP.NET中的FILE对象总结 (藏)

ASP.NET中引入了名字空间,其中文件操作对应的名字空间是System.IO。名字空间和动态链接库有些类似,但是名字空间在整个.net系统中都可以应用。在ASP.NET的页面中可以使用<%@import namespace=...%>来引用名字空间。在vb6中采用fso对文件进行操作,在asp.net中的文件对象和fso很相似。这里我介绍一下file对象:file对象的作用主要是创...

weixin_30394981的博客 297

asp.net文件夹上传

ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。ASP.NET页面设计:TextBox和Button按钮。TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实现选择文件夹的问题还没有解决,暂时只能手动输入。两种方法:生成rar和zip。1.生成rarusing Microsoft.Win32;using System.Diagnostics;pro

Mr_Zang666的博客 343

ASP.NET页中读取文本文件

简介 在现实世界中,人们经常希望能够把某个文本文件的部分或全部内容保存到一个 Web 网页变量中。在经典的 ASP 中,只要简单地使用 FileSystemObject 就能做到了。其实,在 ASPFAQs.com 中就有一个 FAQ 栏目专门讨论 FileSystemObject 。 可是在 ASP.NET 中呢?FileSystemObject 当然还可以用,不过,经验表明这么做会严重影响服务

神奇小子技术出世 1314

ASP文本文档(txt)相关操作代码

ASP文本文档(txt)相关操作代码 2011年04月22日      'ReadLine:从文件中读取一行数据   'Read(N):从文件中读取N个字节的数据   'ReadAll:读取文件中的所有数据   ========================FSO=============================   究级FSO函数,推荐使用。   Const...

ocw356og 256

ASP.NETASP.NET框架概述

本文是 ASP.NET 框架的概述,相信看完本文之后大家就会对 ASP.NET 框架有一个初步的认识。ASP.NET是微软在2000年发布的一个免费的 Web 框架,可以使用 HTML、CSS 和 JavaScript 构建出色的网站和 Web 应用程序。还可以创建 Web API (应用程序接口)并使用 Web 套接字等实时技术。ASP.NET 框架支持使用 C# 和 Visual Basic 两种语言进行开发。点击进入 ASP.NET 框架官方网站。

好学若饥,谦卑若愚。 1万+

C#、ASP.NETASP.NET MVC、ASP.NET web form、asp.net core mvc的区别。哦我的上帝啊!这可真糟糕

微软的命名很糟糕。技术上有两个框架:ASP.NETASP.NET Core,它们分别基于.NET Framework和.NET Core构建。 当Microsoft首次尝试创建一个遵循MVC模式的“现代”Web应用程序平台时,它将这个新平台称为“ASP.NET MVC”,以区别于以前的ASP.NET应用程序(主要是Web Forms)。然后,为了更加混淆事情,他们后来添加了“ASP.NET We...

菜鸟变凤凰 2431

C#、ASPASP.NET.NETASP.NET CORE区别、ASP.NET Core其概念和特点、ASP.NET Core个人心得体会

ASP.NET Core是.NET平台上的新一代Web应用程序开发框架,它是ASP.NET的升级版本。与传统的ASP.NET相比,ASP.NET Core更加轻量级、高性能且跨平台。它采用了基于Razor的视图引擎和中间件管道模型,提供了更大的灵活性和可扩展性。

qq_62186948的博客 5988

关于.NETASP.NETASP

发展历程 1996年,ASP 1.0(Active Server Pages,即ASP)版本出现了,它引起了Web开发的新革命,降低了动态网页开发的难度。以前开发动态网页需要编写大量繁杂的C代码,编程效率非常低下,而且需要Web网页开发者掌握非常高的编程技巧。而ASP使用简单的脚本语言,能够将代码直接嵌入HTML,使设计Web网页变得简单。 虽然ASP非常简单,但却能够实现非常强大的功能,这一切得益于其组件。特别是ADO组件,使得在网页中访问数据库易如反掌。这一切推动了动态网页的快速发展与建设,同时使A

荒唐的博客 3060

ASP.NET 学习笔记之二 建立 ASP.NET 应用程序

ASP.NET 学习笔记之二  建立 ASP.NET 应用程序一、ASP.NET配置文件的特点1) 配置信息存储在基于 XML 的文本文件中。2) 多个配置文件(名称都是 Web.config)可以出现在 ASP.NET Web 应用程序服务器上的多个目录中。每个 Web.config 文件都将配置设置应用于它自己的目录和它下面的所有子目录。子目录中的配置文件可以提供除从父目录继承的配置信息以外的

东哥技术专栏 - Coldwine's Blog 1841

一文讲懂C#、ASP.NETASP.NET MVC、ASP.NET web form、asp.net core mvc的区别

一文讲懂C#、ASP.NETASP.NET MVC、ASP.NET web form、asp.net core mvc的区别

Blue 4485

ASP.net的简单认识

前言      小编最近在进入BS的学习过程中,接触到了ASP.net的框架,那么它是什么,有什么作用呢? ASP.net是什么 一、web框架    小编在微软的官网上找到关于ASP.net的介绍:ASP.net是一个用.NET构建现代Web应用程序和服务的开源Web框架, 基于HTML5,CSS和JavaScript创建简单,快速的网站,并可扩展到数百万用户。

冯浩月 4857

ASP.NET Core物理文件:磁盘文件操作

在现代Web应用开发中,文件操作是不可或缺的核心功能。ASP.NET Core提供了强大而灵活的文件系统抽象,让开发者能够以统一的方式处理物理磁盘文件、嵌入式资源等多种文件源。本文将深入探讨ASP.NET Core中的物理文件操作机制,帮助您掌握高效、安全的文件处理技巧。 ## 文件提供者模式:统一抽象接口 ASP.NET Core通过`IFileProvider`接口提供了一套统一的文件访问...

gitblog_00144的博客 1015

ASP 转换为 ASP.NET

ASP 转换为 ASP.NET升级至 Microsoft .NET本文将先从解释典型数据驱动的 ASP 应用程序开始,再接下来讨论将 ASP 应用程序移植到 ASP.NET目标·                 将 ASP 及 Microsoft ASP.NET 执行在相同的网页服务器上 ·                 分析一般的 ASP 应用程序 ·   

努力!! 6845

ASP.NET开发入门

1.1.1 概述ASP.NET是一种开发动态网站的技术,他是.NET框架的一部分,可以使用任何.NET兼容的语言(如VisualBasic, .NET, C#, J#等语言)来编写ASP.NET网站..NET Framework是Microsoft公司推出的完全面向对象的软件开发与运行平台.CLR(Common Language Runtime,公共语言运行时):负责管理和执行由.NET编译器编译产生的中间语言代码类库:1.1.3 ASP.NET的特性。

qqyu60的博客 3014

ASP.NET中的FILE对象总结

   迈克老猫(MikeCat)来自:老猫の理想  在ASP.NET中引入了名字空间,其中文件操作对应的名字空间是System.IO。名字空间和动态链接库有些类似,但是名字空间在整个.net系统中都可以应用。在ASP.NET的页面中可以使用来引用名字空间。在vb6中采用fso对文件进行操作,在asp.net中的文件对象和fso很相似。这里我介绍一下file对象:file对象的作用主要是创建

mikecat888的专栏 1266
上一篇: 关于javascript中对于类的typeof
下一篇: AJAX简单学习
lne818
博客等级 码龄24年 23粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值