首页系统directory.getfiles(Directory.GetFiles)

directory.getfiles(Directory.GetFiles)

编程之家2024-02-10111次浏览

一、C# Directory的问题

using System;

directory.getfiles(Directory.GetFiles)

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Example

{

directory.getfiles(Directory.GetFiles)

class Program

{

static void Main(string[] args)

{

directory.getfiles(Directory.GetFiles)

////////////////文件打开下面的代码打开D:\wang.txt文件,并且向文件中写入"hello"

FileStream textFile= File.Open(@"D:\wang.txt", FileMode.Append);//以Append方式打开文件(如果不存在,会创建)

byte[] info={(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};//要写入的信息

textFile.Write(info, 0, info.Length);//Write方法只能写入byte数组

textFile.Close();//关闭文件流

//////////////////////文件创建

FileStream newText= File.Create(@"D:\newText.txt");//创建文件

newText.Close();//关闭文件

////////////////////删除文件

File.Delete(@"d:\newText.txt");

//////////////////文件复制如果目标文件存在,不允许复制(就是不能覆盖同名文件)

//File.Copy(@"d:\wang.txt",@"d:\CopyWang.txt");

////////////////文件移动只能在同一个盘中移动如果目标路径不正确,不能移动

// File.Move(@"d:\CopyWang.txt",@"D:\A\movewang.txt");

////////////////////////设置文件属性为只读,隐藏

//File.SetAttributes(@"D:\copywang.txt", FileAttributes.ReadOnly| FileAttributes.Hidden);//同时满足多个属性,必须用位或(|).

///////////////判断文件是不是存在

if(File.Exists(@"D:\copywang.txt"))//如果存在即便是隐藏的文件也可以找到

{

File.SetAttributes(@"D:\copywang.txt", FileAttributes.ReadOnly);//重新设置属性后,隐藏的文件也会显示出来,只要不加Hidden属性

Console.WriteLine("找到文件copywang.txt");

}

else

{

Console.WriteLine("没有找到文件CopyWang.txt");

}

/*

此外,File类对于Text文本提供了更多的支持。

?AppendText:将文本追加到现有文件

?CreateText:为写入文本创建或打开新文件

?OpenText:打开现有文本文件以进行读取

但上述方法主要对UTF-8的编码文本进行操作,从而显得不够灵活。在这里推荐读者使用下面的代码对txt文件进行操作。

?对txt文件进行“读”操作,示例代码如下:

*/

StreamReader textReader= new StreamReader(@"D:\wang.txt", System.Text.Encoding.Default);//以默认编码方式打开文件

string str= textReader.ReadToEnd();//读取文件

Console.WriteLine("使用StreamReader读取文本内容:"+ str);

textReader.Close();

//////////////////对txt文件写内容

StreamWriter textWriter= new StreamWriter(@"D:\wang.txt");

str="Learn.Net";

textWriter.Write(str);

textWriter.Close();

/*

System.IO.Directory类和System.DirectoryInfo类

主要提供关于目录的各种操作,使用时需要引用System.IO命名空间。下面通过程序实例来介绍其主要属性和方法。

*/

Directory.CreateDirectory(@"D:\wang1\wang");//创建目录(文件夹)如果已经存在,则保持;还可以一次创建多级目录

/////////////////////////////////目录属性设置方法

DirectoryInfo dirInfo= new DirectoryInfo(@"D:\wang1\wang");//

dirInfo.Attributes= FileAttributes.Hidden;//| FileAttributes.ReadOnly;//设置文件夹属性

/////////////////Delete方法的第二个参数为bool类型,它可以决定是否删除非空目录。

//如果该参数值为true,将删除整个目录,即使该目录下有文件或子目录;若为false,则仅当目录为空时才可删除。

//Directory.Delete(@"D:\wang1", true);//如果文件设置为ReadOnly,则不能删除

//Directory.Move(@"d:\wang1",@"d:\wang3");//把文件夹wang1移动到文件夹wang3中,相当于把wang1删除,创建一个wang3,再把内容移动到wang3

string[] Directories= Directory.GetDirectories(@"D:\wang3");//获得文件夹wang3的目录

foreach(string var in Directories)

Console.WriteLine(var);

string[] Files= Directory.GetFiles(@"D:\wang1");//获取文件夹wang1下面的所有文件

foreach(string var in Files)

Console.WriteLine(var);

if(Directory.Exists(@"D:\wang1"))

Console.WriteLine("文件夹wang1存在");

/*

在C#中“\”是特殊字符,要表示它的话需要使用“\\”。由于这种写法不方便,C#语言提供了@对其简化。只要在字符串前加上@即可直接使用“\”。

所以上面的路径在C#中应该表示为“Book”,@“\Tmp\Book”,@“C:\Tmp\Book”。

*/

Console.ReadLine();

}

}

}

二、求高手详解下.net Directory类

.NET中处理文件和文件夹的操作相关的类:File类和Directory类

在设计和实现“网络硬盘”的过程中,将大量地使用和文件系统操作相关的内容。故本节先对和文件系统相关的两个.NET类进行简要介绍。System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间。下面通过程序实例来介绍其主要属性和方法。(1)文件打开方法:File.Open

public static FileStream Open(string path,FileMode mode)

下面的代码打开存放在c:\tempuploads目录下名称为newFile.txt文件,并在该文件中写入hello。private void OpenFile()

{

FileStream.TextFile=File.Open(@"c:\tempuploads\newFile.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:\tempuploads下创建名为newFile.txt的文件。由于File.Create方法默认向所有用户授予对新文件的完全读/写访问权限,所以文件是用读/写访问权限打开的,必须关闭后才能由其他应用程序打开。为此,所以需要使用FileStream类的Close方法将所创建的文件关闭。private void MakeFile()

{

FileStream NewText=File.Create(@"c:\tempuploads\newFile.txt");

NewText.Close();

}

(3)文件删除方法:File.Delete该方法声明如下:

public static void Delete(string path);

下面的代码演示如何删除c:\tempuploads目录下的newFile.txt文件。private void DeleteFile()

{

File.Delete(@"c:\tempuploads\newFile.txt");

}

(4)文件复制方法:File.Copy该方法声明如下:public static void Copy(string sourceFileName,string destFileName,bool overwrite);

下面的代码将c:\tempuploads\newFile.txt复制到c:\tempuploads\BackUp.txt。由于Cope方法的OverWrite参数设为true,所以如果BackUp.txt文件已存在的话,将会被复制过去的文件所覆盖。private void CopyFile()

{

File.Copy(@"c:\tempuploads\newFile.txt",@"c:\tempuploads\BackUp.txt",true);

}

(5)文件移动方法:File.Move该方法声明如下:public static void Move(string sourceFileName,string destFileName);

下面的代码可以将c:\tempuploads下的BackUp.txt文件移动到c盘根目录下。注意:只能在同一个逻辑盘下进行文件转移。如果试图将c盘下的文件转移到d盘,将发生错误。private void MoveFile()

{

File.Move(@"c:\tempuploads\BackUp.txt",@"c:\BackUp.txt");

}

(6)设置文件属性方法:File.SetAttributes该方法声明如下:public static void SetAttributes(string path,FileAttributes fileAttributes);

下面的代码可以设置文件c:\tempuploads\newFile.txt的属性为只读、隐藏。private void SetFile()

{

File.SetAttributes(@"c:\tempuploads\newFile.txt",

FileAttributes.ReadOnly|FileAttributes.Hidden);

}文件除了常用的只读和隐藏属性外,还有Archive(文件存档状态),System(系统文件),Temporary(临时文件)等。关于文件属性的详细情况请参看MSDN中FileAttributes的描述。(7)判断文件是否存在的方法:File.Exist该方法声明如下:public static bool Exists(string path);

下面的代码判断是否存在c:\tempuploads\newFile.txt文件。若存在,先复制该文件,然后其删除,最后将复制的文件移动;若不存在,则先创建该文件,然后打开该文件并进行写入操作,最后将文件属性设为只读、隐藏。if(File.Exists(@"c:\tempuploads\newFile.txt"))//判断文件是否存在

{

CopyFile();//复制文件

DeleteFile();//删除文件

MoveFile();//移动文件

}

else

{

MakeFile();//生成文件

OpenFile();//打开文件

SetFile();//设置文件属性

}

此外,File类对于Text文本提供了更多的支持。· AppendText:将文本追加到现有文件· CreateText:为写入文本创建或打开新文件· OpenText:打开现有文本文件以进行读取但上述方法主要对UTF-8的编码文本进行操作,从而显得不够灵活。在这里推荐读者使用下面的代码对txt文件进行操作。·对txt文件进行“读”操作,示例代码如下:StreamReader TxtReader= new StreamReader(@"c:\tempuploads\newFile.txt",System.Text.Encoding.Default);

string FileContent;

FileContent= TxtReader.ReadEnd();

TxtReader.Close();

·对txt文件进行“写”操作,示例代码如下:StreamWriter= new StreamWrite(@"c:\tempuploads\newFile.txt",System.Text.Encoding.Default);

string FileContent;

TxtWriter.Write(FileContent);

TxtWriter.Close();

System.IO.Directory类和System.DirectoryInfo类主要提供关于目录的各种操作,使用时需要引用System.IO命名空间。下面通过程序实例来介绍其主要属性和方法。(1)目录创建方法:Directory.CreateDirectory该方法声明如下:public static DirectoryInfo CreateDirectory(string path);

下面的代码演示在c:\tempuploads文件夹下创建名为NewDirectory的目录private void MakeDirectory()

{

Directory.CreateDirectory(@"c:\tempuploads\NewDirectoty");

}

(2)目录属性设置方法:DirectoryInfo.Atttributes下面的代码设置c:\tempuploads\NewDirectory目录为只读、隐藏。与文件属性相同,目录属性也是使用FileAttributes来进行设置的。private void SetDirectory()

{

DirectoryInfo NewDirInfo= new DirectoryInfo(@"c:\tempuploads\NewDirectoty");

NewDirInfo.Atttributes= FileAttributes.ReadOnly|FileAttributes.Hidden;

}

(3)目录删除方法:Directory.Delete该方法声明如下:public static void Delete(string path,bool recursive);下面的代码可以将c:\tempuploads\BackUp目录删除。Delete方法的第二个参数为bool类型,它可以决定是否删除非空目录。如果该参数值为true,将删除整个目录,即使该目录下有文件或子目录;若为false,则仅当目录为空时才可删除。private void DeleteDirectory()

{

Directory.Delete(@"c:\tempuploads\BackUp",true);

}

(4)目录移动方法:Directory.Move该方法声明如下:public static void Move(string sourceDirName,string destDirName);

下面的代码将目录c:\tempuploads\NewDirectory移动到c:\tempuploads\BackUp。private void MoveDirectory()

{

File.Move(@"c:\tempuploads\NewDirectory",@"c:\tempuploads\BackUp");

}

(5)获取当前目录下的所有子目录方法:Directory.GetDirectories该方法声明如下:public static string[] GetDirectories(string path;);下面的代码读出c:\tempuploads\目录下的所有子目录,并将其存储到字符串数组中。private void GetDirectory()

{

string [] Directorys;

Directorys= Directory. GetDirectories(@"c:\tempuploads");

}(6)获取当前目录下的所有文件方法:Directory.GetFiles该方法声明如下:public static string[] GetFiles(string path;);

下面的代码读出c:\tempuploads\目录下的所有文件,并将其存储到字符串数组中。private void GetFile()

{

string [] Files;

Files= Directory. GetFiles(@"c:\tempuploads",);

}

(7)判断目录是否存在方法:Directory.Exist该方法声明如下:public static bool Exists(

string path;

);

下面的代码判断是否存在c:\tempuploads\NewDirectory目录。若存在,先获取该目录下的子目录和文件,然后其移动,最后将移动后的目录删除。若不存在,则先创建该目录,然后将目录属性设为只读、隐藏。if(File.Exists(@"c:\tempuploads\NewDirectory"))//判断目录是否存在

{

GetDirectory();//获取子目录

GetFile();//获取文件

MoveDirectory();//移动目录

DeleteDirectory();//删除目录

}

else

{

MakeDirectory();//生成目录

SetDirectory();//设置目录属性

}

和文件有关的就这2个最重要了.

三、GetFiles()怎样读取多种格式文件

由于 getfiles()一次只能获到一种类型的文件,所以只能先获取到指定目录下的所有文件,再循环判断每个文件是否是要获

取的文件;假如获取指定目录下的所有视频文件,实现代码如下:

///<summary>

/// C#获取指定目录下多种指定类型文件

///</summary>

///<param name="filePath">路径</param>

private void GetVideoFiles(string filePath)

{

DirectoryInfo di= new DirectoryInfo(filePath);

FileInfo[] afi= di.GetFiles("*.*");

string fileName;

IList<string> list= new List<string>();

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

{

fileName= afi[i].Name.ToLower();

if(fileName.EndsWith(".rmvb")|| fileName.EndsWith(".rm")|| fileName.EndsWith(".avi")||

fileName.EndsWith(".mp4"))

{

list.Add(fileName);

}

}

}

如果不同类型的文件要求不同的操作,把并列的条件改 if(){} else if(){}或 switch语句即可。

调用方法:GetVideoFiles(@"G:\xq\test");

网页错误详细信息(win10系统网页错误详细信息解决方法)服务器状态查询(器状态一招:准确查询命令详解)