当前位置: 首页 > news >正文

广州化妆品网站建设/公司网络营销策划书

广州化妆品网站建设,公司网络营销策划书,如何让网站被谷歌收录,医疗类网站建设注:C#的文件操作都是包含在System.Io的命名空间里面。 一、 Path类:对一个路径做相应操作,包括文件路径,目录路径。通常会用到Path这个类。1.更改路径字符串的扩展名Public static string ChangeExtension(string path,string…

注:C#的文件操作都是包含在System.Io的命名空间里面。


一、 Path类
对一个路径做相应操作,包括文件路径,目录路径。通常会用到Path这个类。
1.更改路径字符串的扩展名
Public  static  string  ChangeExtension(string  path,string  extension)
参数:
path(String):要修改的路径信息.
extension(String):新的扩展名。
返回值:String,修改后的路径字符串。
注意细节:a、如果 extension 是 null,则返回的字符串包含指定的路径,其扩展名已移除(点还在)。string s =Path.ChangeExtension(@"c:\path.dll", "");//返回:"c:\path."b、如果 path 是 null 或空字符串 (""),则返回的路径信息是未修改的。string s2 = Path.ChangeExtension("", ".txt");//返回:""C、如果 path 不具有扩展名,并且 extension 不是 null,则返回的路径字符串包含 extension,它追加到 path 的结尾。string s3 = Path.ChangeExtension(@"c:\目录", ".txt");//返回:"c:\目录.txt"。 如果这里的extension不含句点,会自动添加,返回的还是"c:\目录.txt"
2、合并两个字符路径字符串
public static string Combine(string path1,string path2)
    参数:
path1(String) ,第一个路径
path2(String), 第二个路径
返回值:String ,合并后的路径字符串。
常见的合并操作为:
string path1 = @"c:\目录";
string path2 = @"install.txt";
string s4 = Path.Combine(path1, path2);
//返回:"c:\目录\install.txt"
   3.获取指定路径字符串的目录信息
   public static string GetDirectoryName(string path)
   直接看几个示例了:
string fileName = @"C:\mydir\myfile.ext";
string path = @"C:\mydir\";
string rootPath = @"C:\";

Path.GetDirectoryName(fileName);
//返回:'C:\mydir'
Path.GetDirectoryName(path);
//返回:'C:\mydir'
Path.GetDirectoryName(rootPath);
//返回:””
4.获取指定路径字符串的扩展名
public static string GetExtension(string path)
string fileName = @"C:\mydir.old\myfile.ext";
string path = @"C:\mydir.old\";
Path.GetExtension(fileName);
//返回 : '.ext'
Path.GetExtension(path);
//返回 :' '


二、File类和FileInfo类
File类和FileInfo类的区别和使用方法.,两者的主要区别是File不能实例化,只提供静态方法,而后者可以实例化,提供的方法和File类相似. C#语言中通过File和FileInfo类来创建、复制、删除、移动和打开文件。在File类中提供了一些静态方法,使用这些方法可以完成以上功能,但File类不能建立对象。FileInfo类使用方法和File类基本相同,但FileInfo类能建立对象。在使用这两个类时需要引用System.IO命名空间。这里重点介绍File类的使用方法。
1、简单介绍些方法
AppendText:返回StreamWrite,向指定文件添加数据;如文件不存在,就创建该文件。
 Copy:复制指定文件到新文件夹。
Create:按指定路径建立新文件
Delete:删除指定文件。
Exists:检查指定路径的文件是否存在,存在,返回true。
GetAttributes:获取指定文件的属性。
GetCreationTime:返回指定文件或文件夹的创建日期和时间。
GetLastAccessTime:返回上次访问指定文件或文件夹的创建日期和时间。
GetLastWriteTime:返回上次写入指定文件或文件夹的创建日期和时间。
Move:移动指定文件到新文件夹。
Open:返回指定文件相关的FileStream,并提供指定的读/写许可。
OpenRead:返回指定文件相关的只读FileStream。
OpenWrite:返回指定文件相关的读/写FileStream。
SetAttributes:设置指定文件的属性。
SetCretionTime:设置指定文件的创建日期和时间。
SetLastAccessTime:设置上次访问指定文件的日期和时间。
SetLastWriteTime:设置上次写入指定文件的日期和时间。


2、下面通过程序实例来介绍其主要方法:
(1)文件打开方法:File.Open
该方法的声明如下:public static FileStream Open(string path, FileMode mode)。
下面的代码打开存放在c:\Example目录下名称为e1.txt文件,并在该文件中写入hello。
FileStream  TextFile=File.Open(@"c:\ Example\e1.txt",FileMode.Append);
byte []  Info={(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(Info,0,Info.Length);
TextFile.Close();
(2)文件创建方法:File.Create
该方法的声明如下:public  static  FileStream  Create(string path)。下面的代码演示如何在c:\Example下创建名为e1.txt的文件。
FileStream  NewText = File.Create(@"c:\Example\e1.txt");
NewText.Close();
(3)文件删除方法:File.Delete
该方法声明如下:public static void Delete(string path)。下面的代码演示如何删除c:\Example目录下的e1.txt文件。
File.Delete(@"c:\Example\e1.txt");
(4)文件复制方法:File.Copy
该方法声明如下:
public static void Copy(string  sourceFileName,string  destFileName,bool  overwrite);
下面的代码将c:\Example\e1.txt复制到c:\Example\e2.txt。由于Cope方法的OverWrite参数设为true,所以如果e2.txt文件已存在的话,将会被复制过去的文件所覆盖。
File.Copy(@"c:\Example\e1.txt",@"c:\Example\e2.txt",true);
(5)文件移动方法:File.Move
该方法声明如下:public  static  void  Move(string  sourceFileName,string destFileName);下面的代码可以将c:\Example下的e1.txt文件移动到c盘根目录下。注意:只能在同一个逻辑盘下进行文件转移。如果试图将c盘下的文件转移到d盘,将发生错误。
File.Move(@"c:\Example\BackUp.txt",@"c:\BackUp.txt");
(6)判断文件是否存在的方法:File.Exist
该方法声明如下:public static bool Exists(string path);下面的代码判断是否存在c:\Example\e1.txt文件。
if(File.Exists(@"c:\Example\e1.txt"))//判断文件是否存在
(7)得到文件的属性
用下面的代码可以得到文件的属性,例如文件创建时间、最近访问时间、最近修改时间等等。
FileInfo fileInfo=new FileInfo(“file1.txt”);
string s=fileInfo.FullName+”文件长度=”+fileInfo.Length+”,建立时间=”+ fileInfo.CreationTime+”;
也可用如下代码:
string s=”建立时间=”+File.File.GetCreationTime(“file1.txt”)+”最后修改时间=”+ File.GetLastWriteTime(“file1.txt”)+”访问时间=”+File.GetLastAccessTime(“file1.txt”);

 

三、Directory类和DirectoryInfo类
Directory类来创建、复制、删除、移动文件夹。在Directory类中提供了一些静态方法,使用这些方法可以完成以上功能。但Directory类不能建立对象。DirectoryInfo类使用方法和Directory类基本相同,但DirectoryInfo类能建立对象。在使用这两个类时需要引用System.IO命名空间。这里重点介绍Directory类的使用方法。
Directory类常用的方法如下:
CreateDirectory:按指定路径创建所有文件夹和子文件夹。
Delete:删除指定文件夹。
Exists:检查指定路径的文件夹是否存在,存在,返回true。
GetCreationTime:返回指定文件或文件夹的创建日期和时间。
GetCurrentDirectory:获取应用程序的当前工作文件夹。
GetDirectories:获取指定文件夹中子文件夹的名称。
GetDirectoryRoot:返回指定路径的卷信息、根信息或两者同时返回。
GetFiles:返回指定文件夹中子文件的名称。
GetFileSystemEntries:返回指定文件夹中所有文件和子文件的名称。
GetLastAccessTime:返回上次访问指定文件或文件夹的创建日期和时间。
GetLastWriteTime:返回上次写入指定文件或文件夹的创建日期和时间。
GetLogicalDrives:检索计算机中的所有驱动器,例如A:、C:等等。
GetParent:获取指定路径的父文件夹,包括绝对路径和相对路径。
Move:将指定文件或文件夹及其内容移动到新位置。
SetCreationTime:设置指定文件或文件夹的创建日期和时间。
SetCurrentDirectory:将应用程序的当前工作文件夹设置指定文件夹。
SetLastAccessTime:设置上次访问指定文件或文件夹的日期和时间。
SetLastWriteTime:设置上次写入指定文件夹的日期和时间。


3、下面通过程序实例来介绍其主要方法:
(1)目录创建方法:Directory.CreateDirectory
方法声明如下:public  static  DirectoryInfo  CreateDirectory(string path);
下面的代码演示在c:\Dir1文件夹下创建名为Dir2子文件夹。
Directory.CreateDirectory(@"c:\Dir1\Dir2");
(2)目录属性设置方法:DirectoryInfo.Atttributes
下面的代码设置c:\Dir1\Dir2目录为只读、隐藏。与文件属性相同,目录属性也是使用FileAttributes来进行设置的。
DirectoryInfo  DirInfo=new  DirectoryInfo(@"c:\Dir1\Dir2");
DirInfo.Atttributes=FileAttributes.ReadOnly
FileAttributes.Hidden;
(3)目录删除方法:Directory.Delete
该方法声明如下:public  static  void Delete(string  path,bool  recursive);
下面的代码可以将c:\Dir1\Dir2目录删除。Delete方法的第二个参数为bool类型,它可以决定是否删除非空目录。如果该参数值为true,将删除整个目录,即使该目录下有文件或子目录;若为false,则仅当目录为空时才可删除。
Directory.Delete(@"c:\Dir1\Dir2",true);
(4)目录移动方法:Directory.Move
该方法声明如下:public  static  void  Move(string sourceDirName,string destDirName);下面的代码将目录c:\Dir1\Dir2移动到c:\Dir3\Dir4。
File.Move(@"c:\Dir1\Dir2",@"c:\Dir3\Dir4");}
(5)获取当前目录下所有子目录:Directory.GetDirectories
该方法声明如下:public  static  string[] GetDirectories(string path;);下面的代码读出c:\Dir1\目录下的所有子目录,并将其存储到字符串数组中。
string [] Directorys;   Directorys = Directory. GetDirectories (@"c:\Dir1");
获得所有逻辑盘符:
string[] AllDrivers=Directory.GetLogicalDrives();
(5)判断目录是否存在方法:Directory.Exist
该方法声明如下:public static bool Exists(string path;);
下面的代码判断是否存在c:\Dir1\Dir2目录。
if(File.Exists(@"c:\Dir1\Dir2"))//判断目录是否存在


四、文件监视类:FileSystemWatcher
侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。可借助FileSystemWatcher会更简单些。
1、属性:
(1)Path--这个属性告诉FileSystemWatcher它需要监控哪条路径。例如,如果我们将这个属性设为“C:\test”,对象就监控test目录下所有文件发生的所有改变(包括删除,修改,创建,重命名)。
(2)IncludeSubDirectories--这个属性说明FileSystemWatcher对象是否应该监控子目录中(所有文件)发生的改变。
(3)Filter--这个属性允许你过滤掉某些类型的文件发生的变化。例如,如果我们只希望在TXT文件被修改/新建/删除时提交通知,可以将这个属性设为“*txt”。在处理高流量或大型目录时,使用这个属性非常方便。
(4)NotifyFilter--获取或设置要监视的更改类型。可以进一步的过滤要监控的更改类型:如watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
2、事件:
(1)Changed--当被监控的目录中有一个文件被修改时,就提交这个事件。值得注意的是,这个事件可能会被提交多次,即使文件的内容仅仅发生一项改变。这是由于在保存文件时,文件的其它属性也发生了改变。
(2)Created--当被监控的目录新建一个文件时,就提交这个事件。如果你计划用这个事件移动新建的事件,你必须在事件处理器中写入一些错误处理代码,它能处理当前文件被其它进程使用的情况。之所以要这样做,是因为Created事件可能在建立文件的进程释放文件之前就被提交。如果你没有准备正确处理这种情况的代码,就可能出现异常。
(3)Deleted--当被监控的目录中有一个文件被删除,就提交这个事件。
(4)Renamed--当被监控的目录中有一个文件被重命名,就提交这个事件。
注:如果你没有将EnableRaisingEvents设为真,系统不会提交任何一个事件。如果有时FileSystemWatcher对象似乎无法工作,请首先检查EnableRaisingEvents,确保它被设为真。
3、事件处理
当FileSystemWatcher调用一个事件处理器时,它包含两个自变量--一个叫做“sender”的对象和一个叫做“e”的 FileSystemEventArgs对象。我们感兴趣的自变量为FileSystemEventArgs自变量。这个对象中包含有提交事件的原因。以下是FileSystemEventArgs对象的一些属性:
属性:
(1)Name--这个属性中使事件被提交的文件的名称。其中并不包含文件的路径--只包含使用事件被提交的文件或目录名称。
(2)ChangeType--这是一个WatcherChangeTypes,它指出要提交哪个类型的事件。其有效值包括:Changed,Created,Deleted,Renamed
(3)FullPath--这个属性中包含使事件被提交的文件的完整路径,包括文件名和目录名。
注意:FileSystemEventArgs对象是监控文件夹下有文件创建、删除、修改时的自变量,如果是重命名的话为RenamedEventArgs对象此时除了FileSystemEventArgs对象的属性值,多了一个OldFullPath,为重命名之前的文件名。


五、文件的读取和写入文件
1、流的概念:在.net FrameWork中进行的所有的输入输出工作都需要使用流.流是串行化设备的抽象表示.串行化设备可以以线性方式存储数据,并可以以同样的方式访问:一次访问一个字节.此设备可以是磁盘文件,打印机,内存位置或任何其他支持以线性方式读写的对象.通过使用设备抽象,就可以隐藏流的基础性的目标或源.这种抽象的级别使得代码可以重用,允许我们编写更通用的程序.因此,当程序从文件输入流或网络输入流读取数据时,就可以转换并重用类似的代码.而且,通过使用流,我们还可以忽略每一种设备的物理机制.因此为了从文件流中读取文件,我们无须担心磁盘开销或内存分配等问题
C# 中Stream类是所有流的抽象基类,它可以为流提供一般性视图,从而使得开发人员不需要了解I/O设备的具体细节。与流相关的操作包括以下3个基本操作。
读取流:即读取流中的内容。
写入流:即将指定的内容写入到流中。
流支持查找:即可以查找或设置流的当前位置。
与流相关的、最为常用的类包括Stream类、FileStream类(文件流,常用于操作文件)、MemoryStream类(内存流,常用来操作内存中的数据)和BufferedStream类(缓存流,用来操作缓存中的数据)。其中Stream类为抽象类,FileStream类、MemoryStream类和BufferedStream类从直接继承于Stream类,它们是实体类。
2、 使用FileStream类管理文件数据
先看几个例子:
(1) 使用FileStream流写入文本文件:
static void Main(string[] args)
{
      string str = "hello world";
       string strPath = @"D:\test.txt";
       FileInfo fileStr = new FileInfo(strPath);
       byte[] strWrite = new UTF8Encoding(true).GetBytes(str);
       FileStream StrStream=fileStr.Create();
       StrStream.Write(strWrite, 0, strWrite.Length);
      Console.WriteLine("写入成功!");
      StrStream.Close();
}
(2)使用MemoryStream类管理内存数据
    static void Main(string[] args)
    {
      string str = "你好!"
      byte[] MermoryWrite = new UTF8Encoding(true).GetBytes(str);
      //在内存中申请适合的空间
      MemoryStream ms = new MemoryStream(MermoryWrite.Length);
      //写入内存缓冲区
      ms.Write(MermoryWrite, 0, MermoryWrite.Length);
      //打印出当前流的位置
      Console.WriteLine(ms.Position);
      //清空缓冲区
      ms.Flush();
      //seek属于定位指针函数,第一个参数它是相对于第二个参数的位置,也相当于偏移量。第二个参数是它用作查找参考点。
      //返回值:流内的新位置,通过将初始参考点和偏移量合并计算而得。
      ms.Seek(0, SeekOrigin.Begin);
      byte[] temp = new byte[MermoryWrite.Length];
      // 从当前流中读取字节块并将数据写入 buffer 中。返回写入缓冲区中的总字节数。
      ms.Read(temp, 0, (int)ms.Length);
      Console.WriteLine(new UTF8Encoding(true).GetChars(temp));
        }      
}
(2) 使用BufferedStream来提高流的性能
 static void Main(string[] args)
        {
            string str = "你好!";
            string strPath = @"D:\test.txt";
            FileInfo fileStr = new FileInfo(strPath);
            byte[] strWrite = new UTF8Encoding(true).GetBytes(str);
            FileStream StrStream = fileStr.Create();

            //实例化缓冲区
            BufferedStream bufferStr = new BufferedStream(StrStream);
            //向缓冲区中写入流
            bufferStr.Write(strWrite, 0, strWrite.Length);
            bufferStr.Close();
            StrStream.Close();
            Console.WriteLine("写入成功!");    
        }
3、 管理应用程序数据
(1) 管理文本数据用StreamReader和StreamWriter,它们继承与抽象类TextReader类和TextWriter类,这点注意不要用错了。
如:读取D:\test.txt文件
static void Main(string[] args)
        {
            string strPath = @"D:\test.txt";          
            //写入文件
            StreamWriter sw=new StreamWriter(File.Open(strPath,FileMode.Append));
            sw.WriteLine(DateTime.Now.ToString());
            //注意清空缓冲区和关闭流对象
            sw.Flush();
            sw.Close();

            //从文件中读取数据
            StreamReader sr=new StreamReader(File.Open(strPath,FileMode.Open));
            Console.WriteLine(sr.ReadToEnd());
 }
(2) 管理字符串数据用StringReader类和StringWriter类,注意用到StringBuilder
        static void Main(string[] args)
        {          
            //写入字符串
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);      
            sw.WriteLine(DateTime.Now.ToString());

            //注意清空缓冲区和关闭流对象
            sw.Flush();
            sw.Close();

            //从文件中读取数据
            StringReader sr = new StringReader(sb.ToString());
            Console.WriteLine(sr.ReadToEnd());

}
(3) 管理二进制文件用BinaryReader类和BinaryWriter类,注意需要一个stream对象
        static void Main(string[] args)
        {
            string strPath = @"D:\test.dat";          
            //写入二进制文件         
  BinaryWriter bw=new BinaryWriter(File.Open(strPath,FileMode.OpenOrCreate));
            bw.Write(true);;
            bw.Write('A');
            //注意清空缓冲区和关闭流对象
            bw.Flush();
            bw.Close();
            //从文件中读取数据
            BinaryReader br = new BinaryReader(File.Open(strPath, FileMode.Open));
            Console.WriteLine(br.ReadBoolean());           
            Console.WriteLine(br.ReadChar());           
}

注:以上这些类都是继承于Stream类的
(4).NET Framework的字符编码类:在这里不再赘述,可以查msdn(<http://msdn.microsoft.com/zh-cn/ms404377>)

(5)扩展下,高效处理字符串
看一下如下代码:
    string str="";
    for (int i = 0; i < 1000; i++)
     {
       str += i.ToString();     
  }
字符串是引用类型,这样将会有999个空间是浪费的,所以为了提高效率引用StringBuilder,而不仅仅是合并。
以上代码可以改为:
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < 1000; i++)
     {
        str.Append(i.ToString());     
  }
这样效率就会大大提高。

简单先写这么多吧,权当复习下。

转载于:https://www.cnblogs.com/fuchongjundream/archive/2012/04/01/2429356.html

http://www.jmfq.cn/news/5108545.html

相关文章:

  • 美仑美家具的网站谁做的/湖南株洲疫情最新情况
  • 新建网站做优化/win11优化大师
  • 厦门做网站/seo云优化
  • 滁州做网站hi444/毛戈平化妆培训学校官网
  • 西安搬家公司电话/刘连康seo培训哪家强
  • 给客户做网站 客户不付尾款/成都网站建设系统
  • 海报设计思路/seo网络推广外包公司
  • 快速知彼网络网站建设/南宁网站快速排名提升
  • 建设网站公司哪个好/电商网站搭建
  • 是在百度中建设网站/最新新闻
  • 事业单位网站建设方案/50个市场营销经典案例
  • 手机怎么做电子书下载网站/长春网站推广排名
  • wordpress图片上传压缩/seo快速软件
  • 淘宝做网站很便宜/app推广接单发布平台
  • 公司注册核名在哪个网站/如何快速提升自己
  • 广州装修公司哪家好/seo营销优化
  • 网店代运营怎么做/厦门seo蜘蛛屯
  • 西安优秀高端网站建设服务商/seo优化sem推广
  • 网站建设的商业阶段/淘宝seo优化排名
  • 如何减少网站建设中的错误/seo关键词工具
  • 网站建设案例展示/盘多多百度网盘搜索引擎
  • 做网站需要什么部门批准/常州seo
  • 国有平台公司是什么意思/网址seo关键词
  • 网站建设如何更改背景图片/域名注册优惠
  • 电脑软件下载网站/企业seo排名
  • 文字转链接网址/优化推广排名网站教程
  • 龙元建设网站/百度推广怎么操作流程
  • 崇州市城乡建设局网站/seo主要优化
  • win2003做网站/百度竞价包年推广公司
  • 如何向谷歌提交网站/长春网站制作方案定制