关于文件读写和xml的相关信息 求 文件读写 和 xml 的详细信息 解释和说明 要带例题哦 谢谢大侠们的 友好帮主哦 小妹 感激不尽呀 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 文件读写一般用STREAMREAD与STRAMEWRITE,不过这两个类好像适合用于文本文件使用,DOC文件会出现乱码,查一下MSDN就都有了。XML文件用XMLDOCUMENT 最简单的 dataset.readXml() 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); } 关于xml方面的知识,请参考http://www.w3school.com.cn/xml/index.asp //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();} 用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明白之后,写跟读理论上是一样的,我就不多写了 webbrowser 打开ftp上的pdf 文件,关闭时报内存不能为读 大家帮忙看一下问题在哪 新手C#的一个问题。 帮我看看Arraylist 里add什么 关于动态连接SQL数据库的任意表查询问题. 如何在水晶报表中拖放全局变量并打印? 开发布局管理器 基窗口和基控件在.net 2003中碰到的问题 DataGrid问题求助! 怎样判断dataset里面有没有记录集? C#2.0开发的dll如何调用C#40开发的dll,求高人! 父窗体隐藏后再显示,子窗体第一次不显示,以后却可以显示,什么原因?
dataset.readXml()
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);
}
//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();
}
首先先按照你要存储的信息写一个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明白之后,写跟读理论上是一样的,我就不多写了