zoukankan      html  css  js  c++  java
  • System.IO命名空间

    使用 System.IO 和 Visual C# .NET 读取文本文件

    在 Visual C# .NET 中读取文本文件 打开和读取文件进行读取访问是输入/输出 (IO) 功能的一个非常重要的部分,即使您不需要写入到相关文件,也是如此http://www.alixixi.com/Dev/Web/ASPNET/aspnet3/2007/2007050734418.html

    确保项目至少引用了 System 命名空间。对 System、System.IO 和 System.Collections 命名空间使用 using 语句,这样以后就无需在代码中限定这些命名空间中的声明。这些语句必须位于任何其他声明之前。http://support.microsoft.com/kb/306777/zh-cn

    1、Form 与 QueryString 集合对象

        如果网页用Post 方法传递数据的,用Form获取数据(使用窗体或页面通过点击按钮提交的):

        语法:Request("FileName")

              Request.Form("FileName")(两种均可取值)

        如果页面有两个或以上相同的名的Text则要使用GetValues()方法+index(序号)获取

        语法:Request.Form.GetValues("FileName")(index)

          例:Request.Form.GetValues("UserName")(0)

              Request.Form.GetValues("UserName")(1)

        如果网页用Get方法传递数据的,用QueryString 获取数据(通过网页传递的参数):

        语法:Request("FileName")

              Request.QueryString ("FileName")

        如果页面有两个或以上相同的名的Text则要使用GetValues()方法+index(序号)获取

        语法:Request.QueryString .GetValues("FileName")(index)

          例:Request.QueryString .GetValues("UserName")(0)

              Request.QueryString .GetValues("UserName")(1)

    2、设置中文编码 (ASP.NET默认为UTF-8,可以WEB.config配置文件设置中文编码)

       <configuration>

         <system.web>

           <globalization//此标记为指定默认编码方式和语种

            fileEncoding="gb2312"//设置编码方式

            requestEncoding="gb2312"//设置Request对象获取数据的编码方式

            responseEncoding="gb2312"//Response对象发送数据的编码方式

            culture="zh-CN"//指定国的语系,zh-CN为中国

           />

         </system.web>

       </configuration>

    3、显示磁盘的相关信息

       DriveInfo[] allDrives = DriveInfo.GetDrives();

       foreach (DriveInfo d in allDrives)

       {

         Response.Write("Drive:"+ d.Name +"<BR>");

         Response.Write("File type:" + d.DriveType + "bytes <BR>");

         if (d.IsReady == true)

            {

             Response.Write("Volume label:" + d.VolumeLabel + "<BR>");

             Response.Write("File system:" + d.DriveFormat + "<BR>");

             Response.Write("Available space to current user:" + d.AvailableFreeSpace + "bytes<BR>");

             Response.Write("Total available space:" + d.TotalFreeSpace + "bytes<BR>");

             Response.Write("Total size of drive:" + d.TotalSize + "bytes <P>");

            }

        }

    4、使用TreeView显示本地磁盘的两种方式:

            TreeNode node = new TreeNode("我的电脑");

            this.TreeView1.Nodes.Add(node);

       (1) DriveInfo[] allDrives = DriveInfo.GetDrives();

                foreach (DriveInfo d in allDrives)

                {

                    TreeNode drivesNode = new TreeNode(d.Name + "*" + d.VolumeLabel + "*");

                    node.ChildNodes.Add(drivesNode);//添加到节点

                }

              //d.VolumeLabel 为对应磁盘的卷标

       (2) string[] str = Directory.GetLogicalDrives();

            for (int k = 0; k < str.Length; k++)

            {

                TreeNode drivesNode = new TreeNode(str[k]);

                node.ChildNodes.Add(drivesNode);

             }

          或

             foreach (DriveInfo k in str)

            {

                TreeNode drivesNode = new TreeNode(k.Name);

                node.ChildNodes.Add(drivesNode);

             }

    5、显示文件夹及文件

       DirectoryInfo thisOne = new DirectoryInfo("磁盘");//获取磁盘

       foreach (DirectoryInfo sub in thisOne.GetDirectories())//使用GetDirectories()方法获取文件夹列表

       {

         if (sub.GetDirectories().Length > 0 || sub.GetFiles().Length > 0)

            {

              TreeNode subdirNode = new TreeNode(sub.Name);

              subdirNode.Value = sub.FullName;

              drivesNode.ChildNodes.Add(subdirNode);

            }

       }

       foreach (FileInfo fi in thisOne.GetFiles())

       {

           TreeNode subNode = new TreeNode(fi.Name);

           drivesNode.ChildNodes.Add(subNode);

        }

    6、用程序建立文件夹

       方法1(动态建文件夹及子文件夹)

         string dir1 = "images\\" + pecode2;//定义相对路径(文件夹名为pecode2)

         string dir2 = "images\\" + pecode2 + "\\" + penums2;//(在上文件夹中建文件夹penums2)

         if (System.IO.Directory.Exists(Server.MapPath(dir1)) == false)

            {

              System.IO.Directory.CreateDirectory(Server.MapPath(dir1));//(没有就先建父的,再建子文件夹)

              System.IO.Directory.CreateDirectory(Server.MapPath(dir2));

            }

            else

               {

                 System.IO.Directory.CreateDirectory(Server.MapPath(dir2));//(存在就建子文件夹)

               }

       方法2

        

         try

            {

                if (System.IO.Directory.Exists(dir1 ))

                {

                    MsgLabel.Text = "该文件夹已经存在";

                    return;

                }

                else

                {

                    System.IO.DirectoryInfo dirinfo = System.IO.Directory.CreateDirectory(dir1 );

                    MsgLabel.Text = "成功创建该文件夹!创建时间为:" + System.IO.Directory.GetCreationTime(dir1 );

                }

            }

            catch (Exception ee)

            {

                MsgLabel.Text = "处理失败! 失败的原因是:" + ee.ToString();

            }

    7、删除文件夹及下面的文件

      

       public static void DeleteFolder(string dir)

            {

                foreach (string d in Directory.GetFileSystemEntries(dir))

                {

                    if (File.Exists(d))

                    {

                        FileInfo fi = new FileInfo(d);

                        if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)

                            fi.Attributes = FileAttributes.Normal;

                        File.Delete(d);//直接删除其中的文件  

                    }

                    else

                        DeleteFolder(d);//递归删除子文件夹  

                }

                Directory.Delete(dir);//删除已空文件夹  

            }

        protected void Button1_Click(object sender, EventArgs e)//调用

            {

                DeleteFolder("F:\\012");

            }

    8、移动文件夹(若文件夹已存在,可选择复盖或先删除再移动过来)

       源文件夹和目标文件夹要求存在于同一个硬盘分区中否则会***作失败

    (***作失败! 失败原因:System.IO.IOException: 源路径和目标路径必须具有相同的根。

        移动***作在卷之间无效。 在 System.IO.Directory.Move(String sourceDirName, String destDirName)

        在 CreateDirectory.MoveButton_Click(Object sender, EventArgs e) )

        方法1

        string f1 = "D:\\013";

                string f2 = "F:\\013\\011";

                try

                {

                    if (!Directory.Exists(f1))

                    {

                        Response.Write("源文件夹不存在!");

                        return;

                    }

                    if (Directory.Exists(f2))

                    {

                        Response.Write("目标文件夹已经存在!");

                        return;

                        //Directory.Delete(f2);删除再建

                        //Directory.Move(f1, f2);

                        //Directory.Move(f1, f2 true); //添加个true 意思是覆盖最好先把文件夹属性设置为空

                       

                    }

                    Directory.Move(f1, f2);

                    Response.Write("文件夹移动成功! 源文件已经被移除。目标文件夹为" + f2);

                }

                catch (Exception ee)

                {

                   Response.Write("***作失败! 失败原因:" + ee.ToString());

                }

       方法2(写成方法)

         public bool Mvdir(string FromPath, string ToPath)

            {

                try

                {

                    if (!Directory.Exists(ToPath))

                    {

                        Directory.Move(FromPath, ToPath);

                        return true;

                    }

                    else

                    {

                        return false;

                    }

                }

                catch (exception e)

                {

                   return false;

                }

            }

          

            protected void Button1_Click(object sender, EventArgs e)

            {           

                Mvdir("F:\\012", "F:\\011\\012"); //调用

            }

    9、对文件的相关***作

       string f1 = "D:\\013\\2.txt";

       string f2 = "F:\\011\\2.txt";

       if (!System.IO.File.Exists(f2))

        {

          //System.IO.File.Copy(f1, f2); //复制文件

          //File.Move(f1, f2); //移动文件

          File.Delete(f1, f2); //删除文件

        }

    转一例:

    //C#写入/读出文本文件

    //注:处理文本的乱码问题

    StreamReader sr = new StreamReader(fileName,Encoding.GetEncoding("gb2312"));

      string fileName =@"c:I.txt";

      StreamReader sr = new StreamReader(fileName); string str=sr.ReadLine (); sr.close();

      StreamWriterrw=File.CreateText(Server.MapPath(".")+"/myText.txt");

      rw.WriteLine("写入");

      rw.WriteLine("abc");

      rw.WriteLine(".NET笔记");

      rw.Flush();

      rw.Close();

      //打开文本文件

      StreamReadersr=File.OpenText(Server.MapPath(".")+"/myText.txt");

      StringBuilderoutput=newStringBuilder();

      stringrl;

      while((rl=sr.ReadLine())!=null)

      ...{

      output.Append(rl+"");

      }

      lblFile.Text=output.ToString();

      sr.Close();

      //C#追加文件

      StreamWritersw=File.AppendText(Server.MapPath(".")+"/myText.txt");

      sw.WriteLine("追逐理想");

      sw.WriteLine("kzlll");

      sw.WriteLine(".NET笔记");

      sw.Flush();

      sw.Close();

      //C#拷贝文件

      stringOrignFile,NewFile;

      OrignFile=Server.MapPath(".")+"/myText.txt";

      NewFile=Server.MapPath(".")+"/myTextCopy.txt";

      File.Copy(OrignFile,NewFile,true);

      //C#删除文件

      stringdelFile=Server.MapPath(".")+"/myTextCopy.txt";

      File.Delete(delFile);

      //C#移动文件

      stringOrignFile,NewFile;

      OrignFile=Server.MapPath(".")+"/myText.txt";

      NewFile=Server.MapPath(".")+"/myTextCopy.txt";

      File.Move(OrignFile,NewFile);

      //C#创建目录

      //创建目录c:sixAge

      DirectoryInfod=Directory.CreateDirectory("c:/sixAge");

      //d1指向c:sixAgesixAge1

      DirectoryInfod1=d.CreateSubdirectory("sixAge1");

      //d2指向c:sixAgesixAge1sixAge1_1

      DirectoryInfod2=d1.CreateSubdirectory("sixAge1_1");

      //将当前目录设为c:sixAge

      Directory.SetCurrentDirectory("c:/sixAge");

      //创建目录c:sixAgesixAge2

      Directory.CreateDirectory("sixAge2");

      //创建目录c:sixAgesixAge2sixAge2_1

      Directory.CreateDirectory("sixAge2/sixAge2_1");

     

     

    资料引用:http://www.knowsky.com/398825.html

     

  • 相关阅读:
    UVA 1513
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:.geodatabase创建,创建时内容缺失问题总结
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:使用TextSymbol做标注显示乱码
    《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
    《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)
    《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境
    《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
    《ArcGIS Runtime SDK for Android开发笔记》——(2)、Android Studio基本配置与使用
    《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/1746857.html
Copyright © 2011-2022 走看看