C# Directory和Directory Info的应用及文件读写

一,Directory 和Directory Info的应用

在Asp,net的实际应用中,上传文件的实现过程中要用到有关目录的操作,来现实文件的上传工作.下面分析下用C#完成文件上传过程的核心代码,其中控件FileUpload用来获取文件/

-------------代码段----------

string filename = FileUploadFileName;//获取上传文件的名字

string filetype = FileUploadFileName.Substring(filename.LastIndexOf(".")+1).ToLower();

上传文件的格式

if (filetype == "rar" || filetype == "doc" || filetype == "txt" || filetype == "pdf")

{//判断是文件格式是否是指定的格式

if (FileUploadFileBytes.Length <= 50 * 1024 * 1024)//判断文件的大小是否满足要求

{

DirectoryInfo filedir = new DirectoryInfo(Server.MapPath("fileupload/"));//获取文件夹fileupload在系统中的相对目录.

// 创建DirectoryInfo实例对象 filedir用来指向保存上传文件的目录.

if (!Directory. Exists(filedir.ToString()))Directory类的静态方法,用来判断目录是否存在

{

Directory.CreateDirectory(filedir.ToString());//如果所要求的目录不存在,调用Directory的静态方法CreateDirectory创建目录.

}

-------------代码段----------

DirectoryInfo常用方法:


DirectoryInfo dif = new DirectoryInfo("c:\\abcd");

DirectoryInfo temp = new DirectoryInfo("c:\\atest");

DirectoryInfo temp3 = new DirectoryInfo("C:\\");

if (!dif.Exists)

dif.Create();

if (!temp.Exists)

Directory.CreateDirectory(temp.ToString());

if (temp.Exists)

temp.Delete();

dif.MoveTo(temp.ToString());

DirectoryInfo[] idr = temp3.GetDirectories();//获取当前目录下的所有子目录.

foreach (DirectoryInfo dir in idr)

Console.WriteLine(dir.FullName);

FileInfo[] files = temp3.GetFiles();

foreach (FileInfo file in files)

Console.WriteLine(file.FullName);


输出C盘子目录信息:

 

在程序运行之前和之后的C盘目录截图,比较变化的情况,多了个atest目录.

   

二. 文件读写

C#和java对于文件的操作的思路有点相似,都是采用管道技术和流操作—Stream来实现相应的功能.,开始操作文件的时候用到文件专用流:System.IO命名空间下的Filestream.,其构造函数有很多,现在先介绍一个很常用的方法: 

FileStream 构造函数 (String, FileMode); 

FileMode有:open,create,openOrcreate,createnew.append, Truncate等几种模式.

下面先看一个例子:

FileInfo mynewfile = new FileInfo("C:\\myfile.txt");//

FileStream sf = new FileStream(mynewfile.ToString(), FileMode.Create);//构造函数,以创建模式打开目标文件,如果不存在就创建相应的文件.

byte[] dataArray = new byte[100000];//字节

new Random().NextBytes(dataArray);//创建随机字节

for (int i = 0; i < dataArray.Length; i++)

{

sf.WriteByte(dataArray[i]);//将字节写入文件理.

}

其他构造方法有:

 

我在这里就不多介绍了,大家可以参考Msdn的文件.关于文件的读写还有个更好的StreamWriter/和StreamReader.下一节将继续介绍.

FielStream类操作的是字节和字节数组,字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行。

FielStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置。

FileStream只能处理原始字节(raw byte),处理原始字节的功能使用FileStream类可以用于处理任何数据文件。

时间: 2024-11-08 20:17:06

C# Directory和Directory Info的应用及文件读写的相关文章

sae中使用directory-使用sae中遇到的关于directory路径的问题

问题描述 使用sae中遇到的关于directory路径的问题 我在sae上开发的时候采用了有关lucene的内容,其中lucene需要生成索引,我把索引文件已经放到了sae提供的storage中.我用sae自带的com.sina.sae.storage.SaeStorage; 和com.sina.sae.util.SaeUserInfo;包操作的时候,都能在SAE的storage中取到我想要找的文件(路径获取方法是:saeStorage.getUrl,能取到文件并读出文件),但是当我采用Dire

vc++编程问题- fatal error C1083: 无法打开包括文件:“windows.h”: No such file or directory

问题描述 fatal error C1083: 无法打开包括文件:"windows.h": No such file or directory fatal error C1083: 无法打开包括文件:"windows.h": No such file or directory 解决方案 同问,您好您最后解决了吗

c# ystem irectory-c# System.IO.Directory 问题

问题描述 c# System.IO.Directory 问题 远程共享文件有三千个文件夹中(每个文件夹中含近万条子文件夹),检索文件夹的子文件夹中含有ABS字符串的信息.使用的是:Directory.GetDirectories(SRC, "*ABS*", SearchOption.TopDirectoryOnly);方法,但奇怪的问题如图所示: 第二条明显不是,却查询了出来.然后更奇怪的是我把这五个文件夹复制到本地,再次同样使用这个方法,没问题,检索出四条.而且将其复制到远程共享文件

C#中Directory类目录操作(复制\重命名\创建\删除)

Directory 类用于典型操作,如复制.移动.重命名.创建和删除目录.也可将 Directory 类用于获取和设置与目录的创建.访问及写入操作相关的 DateTime 信息. 由于所有的 Directory 方法都是静态的,所以如果只想执行一个操作,那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高.大多数 Directory 方法要求当前操作的目录的路径. 例  代码如下 复制代码 //1.---------文件夹创建.移动.删除------

为什么jar没有生成directory entries,jar中的class就不能被Spring扫描到呢?

问题描述 内部机制是什么?求解 解决方案 关于directory entries 的jar与不含directory entries 的区别及读取里面文件的方式:http://blog.csdn.net/wangpeng047/article/details/8202353,spring扫描bean的说明来自spring的reference文档,刚好开源中国上有一份:http://www.oschina.net/code/explore/spring-3.0.4/spring-framework-

asp.net Directory.Exists判断文件夹是否存在代码

在上传文件时经常要判断文件夹是否存在,如果存在就上传文件,否则新建文件夹再上传文件 语法大概这样 string dir="d:xxxyyy" if (system.io.directory.exists(dir)) {   // 存在 } else {   // 不存在 } 下面来看一下详细代码 判断语句为 if (system.io.directory.exists(server.mappath("file")) == false)//如果不存在就创建file文件

mysql_connect报告”No such file or directory”错误的解决方法

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.  ------------------------------------------------------------------------------

[20150127]expdp缺省DIRECTORY.txt

[20150127]expdp缺省DIRECTORY.txt --昨天在学习expdp/impdp命令时,有一次没有输入DIRECTORY参数.发现居然也可以过去,例子. 1.测试1: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ----------------------------------------

Using Create directory &amp; UTL_FILE in Oracle

作者:eygle  [版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明] 链接:http://www.eygle.com/archives/2005/04/using_create_di.html Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性. 其语法为:CREATE [OR REPLACE] DIRECTORY directory AS 'pathname'; 本案例具体创建如下: cr