求 文件读写  和   xml   的详细信息  解释和说明  要带例题哦  
 谢谢大侠们的  友好帮主哦 小妹 感激不尽呀 

解决方案 »

  1.   

    文件读写一般用STREAMREAD与STRAMEWRITE,不过这两个类好像适合用于文本文件使用,DOC文件会出现乱码,查一下MSDN就都有了。XML文件用XMLDOCUMENT
      

  2.   

    最简单的 
    dataset.readXml()
      

  3.   

    using System; 
    using System.IO;public class FileApp 

        public static void Main() 
       { 
           // 在当前目录创建一个文件myfile.txt,对该文件具有读写权限
           FileStream fsMyfile = new FileStream("myfile.txt" , FileMode.Create, FileAccess.ReadWrite);         // 创建一个数据流写入器,和打开的文件关联
           StreamWriter swMyfile = new StreamWriter(fsMyfile);       // 以文本方式写一个文件
           swMyfile.WriteLine("Hello, World"); 
           swMyfile.WriteLine("abcdefghijklmnopqrstuvwxyz"); 
           swMyfile.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
           swMyfile.WriteLine("0123456789");        // 冲刷数据(把数据真正写到文件中去)
           // 注释该句试试看,程序将报错
           swMyfile.Flush();       // 以文本方式读文件
           // 创建一个数据流读入器,和打开的文件关联
           StreamReader srMyfile= new StreamReader(fsMyfile);        // 把文件指针重新定位到文件的开始
           srMyfile.BaseStream.Seek(0, SeekOrigin.Begin);        // 打印提示信息
           Console.WriteLine("****************以文本方式读文件*********************");       // 打印文件文本内容
           string s1;
           while((s1 = srMyfile.ReadLine())!=null)
           {
               Console.WriteLine(s1);
           }
           Console.WriteLine();
           // 以文本方式读文件结束
           // 以二进制方式读文件
           // 创建一个二进制数据流读入器,和打开的文件关联
           BinaryReader brMyfile= new BinaryReader (fsMyfile);       // 把文件指针重新定位到文件的开始
           brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);        // 打印提示信息
           Console.WriteLine("****************以二进制方式读文件*********************");       // 打印文件文本内容
           Byte b1;
           while(brMyfile.PeekChar()>-1)
           {
               b1=brMyfile.ReadByte();
              // 13为"\n",表示回车;10为"\r",表示换行
             if(b1 != 13 && b1 != 10)
             {
                 Console.Write("{0}",b1.ToString());
                 Console.Write("."); 
             }
             else
             {
                  Console.WriteLine();
             }
           }
           Console.WriteLine("\n");
           // 以二进制方式读文件结束       // 关闭以上new的各个对象
           brMyfile.Close(); 
           swMyfile.Close();
           srMyfile.Close(); 
           fsMyfile.Close();       // 读取文件属性
           // 打印提示信息
           Console.WriteLine("****************读取文件属性*********************");       FileInfo fiMyfile=new FileInfo("myfile.txt");
           Console.WriteLine("文件名 : {0}",fiMyfile.Name);
           Console.WriteLine("文件名(含路径) : {0}",fiMyfile.FullName);
           Console.WriteLine("文件大小(bytes) : {0}",fiMyfile.Length);
           Console.WriteLine("文件创建时间 : {0}",fiMyfile.CreationTime);
           } }
    public void FileWrite(string FileName, string WriteString)
            {
                // 在当前目录创建一个文件myfile.txt,对该文件具有读写权限
                FileStream fsMyfile = new FileStream(FileName, FileMode.Create, FileAccess.ReadWrite);            // 创建一个数据流写入器,和打开的文件关联
                StreamWriter swMyfile = new StreamWriter(fsMyfile);            // 以文本方式写一个文件
                //swMyfile.WriteLine("abcdefghijklmnopqrstuvwxyz{0}", 100);
                swMyfile.WriteLine(WriteString);//将成个字符串写入到文件            // 冲刷数据(把数据真正写到文件中去)
                // 注释该句试试看,程序将报错
                swMyfile.Flush();            fsMyfile.Close();
                //swMyfile.Close();
            }        public string FileReadLine(string FileName, int LineNum)
            {
                // 以文本方式读文件
                // 在当前目录创建一个文件myfile.txt,对该文件具有读写权限
                FileStream fsMyfile = new FileStream(FileName, FileMode.Open, FileAccess.Read);            // 创建一个数据流读入器,和打开的文件关联
                StreamReader srMyfile = new StreamReader(fsMyfile);            // 把文件指针重新定位到文件的开始
                srMyfile.BaseStream.Seek(0, SeekOrigin.Begin);            // 打印文件文本内容
                string s1;
                int LineCount = 0;
                while ((s1 = srMyfile.ReadLine()) != null)
                {
                    if (LineCount == LineNum)
                    {
                        fsMyfile.Close();
                       // srMyfile.Close();
                        return (s1);//返回指定行字符串
                    }
                    LineCount++;//下一行
                }            fsMyfile.Close();
               // srMyfile.Close();
                return (null);
            }
      

  4.   

    关于xml方面的知识,请参考http://www.w3school.com.cn/xml/index.asp
      

  5.   


    //xml读写
    using System.Xml;
    using System.IO;
    //...  string path = Environment.CurrentDirectory+"\\Hdata.xml";
      private void 写_Click(object sender, EventArgs e)
            {
              XmlWriterSettings mySettings = new XmlWriterSettings();
              mySettings.Indent = true;//是否进行缩进
              mySettings.IndentChars = ("    ");
              XmlWriter myWriter = XmlWriter.Create(path, mySettings);
              myWriter.WriteStartElement("服务器配置");
              myWriter.WriteElementString("服务器名称", "aaa");
              myWriter.WriteElementString("用户名", "name");
              myWriter.WriteEndElement();
              myWriter.Flush();//当在派生类中被重写时候将缓冲区的所有内容刷新到基础流
              myWriter.Close();
    }
       private void 读_Click(object sender, EventArgs e)
            {
                    XmlReader myReader = XmlReader.Create(path);
                    myReader.Read();
                    myReader.ReadStartElement("服务器配置");
                    myReader.ReadStartElement("服务器名称");
                    this.服务器.text = myReader.ReadString();
                    myReader.ReadEndElement();
                    myReader.ReadStartElement("用户名");
                    this.用户名.text = myReader.ReadString();
                    myReader.ReadEndElement();
                    myReader.Close();
    }
     
      

  6.   

      用dataset与xml结合,进行读取
    首先先按照你要存储的信息写一个xml文件,以备以后用于存储:
       例如:
        StreamWriter sw = new StreamWriter(路径和文件名,false, Encoding.UTF8)
        sw.Write("<?xml version='1.0' standalone='yes'?>\r\n");//xml文件的开头
                           sw.Write("<Texts>\r\n"); //xml这个映射于数据库名
                          sw.Write("<Text>\r\n"); //xml这个映射于表名
                            sw.Write("<CardName>"); //列名
                            sw.Write(tabControl1.TabPages[i].Text);
                            sw.Write("</CardName>\r\n");
                            sw.Write("<TextName>页面1</TextName>\r\n");
                            sw.Write("<IsTime>0</IsTime>\r\n");
                            sw.Write("<MoveIn>2</MoveIn>\r\n");
                            sw.Write("<MoveInSpeed>1</MoveInSpeed>\r\n");
                            sw.Write("<HoldTime>0</HoldTime>\r\n");
                            sw.Write("<isB>False</isB>\r\n");
                            sw.Write("<vAlign>2</vAlign>\r\n");
                            sw.Write("<FontName>宋体</FontName>\r\n");
                            sw.Write("<FontSize>12</FontSize>\r\n");
                            sw.Write("<Content></Content>\r\n");
                          sw.Write("</Text>\r\n");
                        sw.Write("</Texts>\r\n");
                            sw.Close();
    第二步: 理论上是先写后读,可是需要xml里面的表与列,所以先读。
         DataSet ds=new DataSet();
         ds.ReadXml(路径文件名, XmlReadMode.InferSchema);
         DataRow[] drs = ds.Tables["Text"].Select("CardName=" ")//从xml文件中读出的数据是根据表名,列名存储在DataSet中。 要获得某个表某列的值以备使用,从里面获取就行了。
          例如: 获得TextName;
              for(int i=0;i<drs.length;i++){
               drs[i]["TextName"].Tostring();}
                ......都是这样获值的,我就不写了。
        
    第三步:写值分。
          <?xml version="1.0" standalone="yes" ?> 
    <NewDataSet>
    <表1> <!—表1的记录1-->
       <字段1>字段值</字段1> 
    <字段2>字段值</字段2> 
    </表1>
    <表1> <!—表1的记录2-->
       <字段1>字段值</字段1> 
    <字段2>字段值</字段2> 
    </表1><表2><!—表2的记录1-->
       <<字段1>字段值</字段1> 
    <字段2>字段值</字段2> 
    </表2>
    </NewDataSet>用的方法
    xml 对应dataset明白之后,写跟读理论上是一样的,我就不多写了