首页 > 代码库 > c# File 操作

c# File 操作

//1.---------文件夹创建、移动、删除---------

//创建文件夹
Directory.CreateDirectory(Server.MapPath("a"));
Directory.CreateDirectory(Server.MapPath("b"));
Directory.CreateDirectory(Server.MapPath("c"));
//移动b到a
Directory.Move(Server.MapPath("b"), Server.MapPath("a//b"));
//删除c
Directory.Delete(Server.MapPath("c"));

//2.---------文件创建、复制、移动、删除---------

//创建文件
//使用File.Create创建再复制/移动/删除时会提示:文件正由另一进程使用,因此该进程无法访问该文件
//改用 FileStream 获取 File.Create 返回的 System.IO.FileStream再进行关闭就无此问题
FileStream fs;
fs = File.Create(Server.MapPath("a.txt"));
fs.Close();
fs = File.Create(Server.MapPath("b.txt"));
fs.Close();
fs = File.Create(Server.MapPath("c.txt"));
fs.Close();
//复制文件
File.Copy(Server.MapPath("a.txt"),Server.MapPath("a//a.txt"));
//移动文件
File.Move(Server.MapPath("b.txt"),Server.MapPath("a//b.txt"));
File.Move(Server.MapPath("c.txt"),Server.MapPath("a//c.txt"));
//删除文件
File.Delete(Server.MapPath("a.txt"));

//3.---------遍历文件夹中的文件和子文件夹并显示其属性---------

if(Directory.Exists(Server.MapPath("a")))
{
    //所有子文件夹
    foreach(string item inDirectory.GetDirectories(Server.MapPath("a")))
    {
        Response.Write("<b>文件夹:" + item +"</b><br/>");
        DirectoryInfo directoryinfo = new DirectoryInfo(item);
        Response.Write("名称:" + directoryinfo.Name +"<br/>");
        Response.Write("路径:" + directoryinfo.FullName +"<br/>");
        Response.Write("创建时间:" + directoryinfo.CreationTime +"<br/>");
        Response.Write("上次访问时间:" + directoryinfo.LastAccessTime +"<br/>");
        Response.Write("上次修改时间:" + directoryinfo.LastWriteTime +"<br/>");
        Response.Write("父文件夹:" + directoryinfo.Parent +"<br/>");
        Response.Write("所在根目录:" + directoryinfo.Root +"<br/>");
        Response.Write("<br/>");
    }

    //所有子文件
    foreach (string item inDirectory.GetFiles(Server.MapPath("a")))
    {
        Response.Write("<b>文件:" + item +"</b><br/>");
        FileInfo fileinfo = new FileInfo(item);
        Response.Write("名称:" + fileinfo.Name +"<br/>");
        Response.Write("扩展名:" + fileinfo.Extension+"<br/>");
        Response.Write("路径:" + fileinfo.FullName+"<br/>");
        Response.Write("大小:" + fileinfo.Length+"<br/>");
        Response.Write("创建时间:" + fileinfo.CreationTime+"<br/>");
        Response.Write("上次访问时间:" + fileinfo.LastAccessTime+"<br/>");
        Response.Write("上次修改时间:" + fileinfo.LastWriteTime+"<br/>");
        Response.Write("所在文件夹:" + fileinfo.DirectoryName+"<br/>");
        Response.Write("文件属性:" + fileinfo.Attributes+"<br/>");
        Response.Write("<br/>");
    }
}

//4.---------文件读写---------

if (File.Exists(Server.MapPath("a//a.txt")))
{
    StreamWriter streamwrite = newStreamWriter(Server.MapPath("a//a.txt"));
    streamwrite.WriteLine("木子屋");
    streamwrite.WriteLine("http://www.mzwu.com/");
    streamwrite.Write("2008-04-13");
    streamwrite.Close();

    StreamReader streamreader = newStreamReader(Server.MapPath("a//a.txt"));
    Response.Write(streamreader.ReadLine());
    Response.Write(streamreader.ReadToEnd());
    streamreader.Close();
}

 

 

 

获取文件的版本信息:

FileVersionInfo myFileVersionInfo1 =FileVersionInfo.GetVersionInfo("D://TEST.DLL");
textBox1.Text="版本号: " + myFileVersionInfo1.FileVersion;

更改文件属性,删除只读文件:

  下例欲将E:/test.txt文件拷贝至D:/tmp/test.txt,但D:/tmp/test.txt已经存在。

//File.Copy(sourceFile,destinationFile,true); 用来拷贝文件
//当destinationFile已经存在时,无法将文件file1拷贝到目标文件,
//因此先删除destination文件,File.Delete()方法不能删除只读文件,
//因此,如果文件属性为只读(Attributes属性中会包含有"ReadOnly"),
//先把文件属性重置为Normal,然后再删除:
string file1="E://test.txt";
string destinationFile="d://tmp//test.txt";
if(File.Exists(destinationFile))
{
 FileInfo fi=new FileInfo(destinationFile);
 if(fi.Attributes.ToString().IndexOf("ReadOnly")!=-1)
  fi.Attributes=FileAttributes.Normal;
  File.Delete(destinationFile);
}
File.Copy(file1,destinationFile,true);

判断文件是否存在:File.Exists(stringfilePath)

  判断目录是否存在:Directory.Exists("D://LastestVersion") 

  按行读取文件:

int fileCount=0;
// Open the file just specified such that no one else can useit.
StreamReader sr = new StreamReader(textBox1.Text.Trim());
while(sr.Peek() >-1)//StreamReader.Peek()返回下一个可用字符,但不使用它
{
 listBox1.Items.Add(sr.ReadLine());
 fileCount++;
}
sr.Close();

按行写入文件:
StreamWriter sw = new StreamWriter("D://result.txt");
for(int i=0;i<10;i++)
{
 sw.WriteLine("这是第"+i.ToString()+"行数据");
}

c# File 操作