热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

驱动器,文件夹和文件

Directory和DirctioryInfo类是用于创建,移动和枚举目录和子目录的静态方法,如复制,移动,重命名ÿ

  Directory和DirctioryInfo类是用于创建,移动和枚举目录和子目录的静态方法,如复制,移动,重命名,创建和删除目录。也可用于获取和设置与目录的创建访问及写入操作相关的DateTime信息。

  由于所有的Directory方法都是静态的,因此如果只想执行一个操作,那么使用Directory方法的效率比使用相应的DirectoryInfo实例方法可能更高。大多数Directory方法要求当前操作目录的路径

  Directory类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象,可以考虑改用DirectoryInfo的相应实例方法,因为并不总是需要安全检查

  注意,在接受路径作为输入字符串的成员中,路径必须是格式良好的,否则将引发异常。例如,如果路径以空格开头,不会自动删除空格,因此空格开头的格式不正确,否则将引发异常。同样,路径或路径的组合不能被完全限制两次,例如,C:\Temp C:\Windows在大多数情况下也将引发异常。

  下面的代码示例确定的目录是否存在,如果存在,则删除该目录;如果不存在,则创建该目录,然后移动此目录,在其中创建一个文件并对文件进行计数。

string path=@"..\..\MyDif";//声明要操作的目录

string target=@"..\..\TestDir";

try

{

  if(!Directory.Exists(path))    //确定目录是否存在

  {  

    Directory.CreateDirectory(path);  //如果源目录不存在则创建目录

  }

  if(Directory.Exists(target))

  {

    Directory.Delete(target,true);  //如果目标目录存在则删除目录

  }

  Directory.Move(path,target);//移动源目录到目标目录

  File.CreateText(target+@"\myfile.txt");    //在目录中产生文件

  //Directory.GetFile(target).Length;  //获取目录target的文件数

  Console.WriteLine("The number of files in {0} is{1}",target,Directory.GetFiles(target).Length);

}

catch(Exception e)

{

  Console.WriteLine("The process failed:{0}",e.ToString());

}

finally{}

  程序运行后的项目文件夹中产正一个新文件夹TestDir,并在TestDir中产生一个空文本文件myfile.txt。屏幕输出如下:

The number of files in ..\..\TestDir is 1

使用I/O类创建目录中具有exe拓展名的所有文件列表

string path=".";

if(args.Length>0)

{

  if(Directory.Exists(args[0]))

    path=args[0];

  else

    Console.WriteLine("{0}not found;using current directory:",args[0]);

}

DirectoryInfo dir=new DirectoryInfo(path);

foreach(FileInfo f in dir.GetFiles("*.exe"))

{

  string name=f.name;

  long size=f.Length;

  DateTime creationTime=f.CreationTime;

  Console.WriteLine("{0,-12:NO}{-1,-20:g}{2}",size,creationTime,name);

}

Console.ReadLine();

在本例中,DirectoryInfo是当前目录,用(.)表示,代码列出了当前目录中具有exe拓展名的所有文件,同时还列出了这些文件的大小,创建时间和名称。假设程序名FileExample,此代码的输出可能如下:

5,120          2014/3/9 10:10     FileExample.exe

11,584    2014/3/9 10:11     FileExample.vshost.exe

  如果需要另一个目录(如C:\WINDOWS\system32)中的exe文件列表,用Windows系统的"运行"指令,将目录C:\WINDOWS\system32作为参数放在程序名后而运行:

FileExample C:WINDOWS\system32

下面的示例演示如何计算目录大小

public static double DirSize(DirectoryInfo d)

{

  double Size=0;

  FileInfo[]fis=d.GetFiles();//GetFiles返回当前目录的文件列表

  foreach(FileInfo fi in fis)

    Size+=fi.Length;

  DirectoryInfo[]dis=d.GetDirectories();//GetDirectories返回当前目录的子目录

  foreach(DirectoryInfo di in dis)

    Size+=DirSize(di);

  return(Size);

}

public static void Main(string []args)

{

  if(args.Length!=1)

    Console.WriteLine("You mush provide a directory argument at the command line.");

  else

  {

    DirectoryInfo d=new DirectoryInfo(args[0]);

    Console.WriteLine("The size of{0} and its subdirectories is{1} bytes.",d,DirSize(d));

  }

  Console.ReadLine();

}

使用Windows系统的“运行”指令运行此程序,例如

GetDirectroySize.exe c:\WINDOWS\system

输出如下:

The size of c:WINDOWS\system and its subdirectoryies is 700380 bytes

 

下面的示例获取系统特殊文件路径

Console.WriteLine()

//指向系统文件夹C:\WINNT\System32

Console.WriteLine("GetFolderPath:{0}",Environment.GetFolderPath(Environment.SpecialFolder.System));

//指向“我的文档”文件夹

Console.WriteLine("GetFolderPaht:{0}",Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));

输出如下:

GetFolderPath:c:\WINNT\System32

GetFolderPath:C:\Documents and Settings\Administrator\My Documents

  Path类对包含文件或目录路径信息的String实例执行操作,这些操作时以跨平台的方法执行的。.Net Framework不支持通过由设备名称构成的路径(如\\.\PHYSICALDRIVEO)直接访问物理硬盘。路径可以包含绝对或相对位置信息。绝对路径完整地指定一个位置。若要确定当前目录,则调用Directory.GetCurrentDirectory.

  下面的代码实例演示Path类的某些主要成员:

  string path1=@"c:\temp\MyTest.txt";

  string path2=@"c:\temp\MyTest";

  string path3=@"temp";

//确定路径是否包含文件拓展名

if(Path.HasExtension(path1))

  Console.WriteLine("{0}has an extension",path1);

if(!Path.HasExtension(path2))

  Console.WriteLine("{0}has no extension.",path2);

//获取一个值,指示指定的路径字符串是包含绝对路径信息还是包含相对路径信息

if(!Path.IsPathRooted(path3))

  Console.WriteLine("The string{0} contains no root information.",path3);

//返回制定路径字符串的绝对路径

Console.WriteLine("The full path of{0} is {1}",path3,Path.GetFullPath(path3));

//返回当前系统的临时文件夹路径

Console.WriteLine("{0} is the location for temporary files.",Path.GetTempPath());

//创建磁盘上唯一命名的零字节的临时文件并返回该文件的完整路径

Console.WriteLine("{0} is a file available for use.",Path.GetTempFileName());

输出如下:

C:\temp\Mytest.txt has an extension

C:\temp\Mytest has no extension.

The string temp contaions no root informaion.

The full path of temp is

C:\C#\10\10.2\10.2.2\PathMember\PathMember\bin\Debug\temp

转:https://www.cnblogs.com/yk1992/p/3588749.html



推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
author-avatar
只为-娱乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有