C#高级篇(四)---File、FileStream、StreamReader、StreamWriter、xml、json解析
2015-10-10 18:39
731 查看
文件操作
使用File进行文件读取、复制操作
FileStream进行文件读取、复制操作
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _028_使用FileStream读写文件 {
class Program {
static void Main(string[] args) {
//1,创建文件流 用来操作文件
FileStream stream = new FileStream("TextFile1.txt", FileMode.Open);
//2, 读取或者写入数据
byte[] data = new byte[1024];//数据容器
while (true)
{
int length = stream.Read(data, 0, data.Length);
if (length == 0)
{
Console.WriteLine("读取结束");
break;
}
for (int i = 0; i < length; i++)
{
Console.Write(data[i] + " ");
}
}
//使用filestream完成文件复制
FileStream readStream = new FileStream("3.LINQ.png",FileMode.Open);
FileStream writeStream = new FileStream("LINQ副本.png",FileMode.Create);
byte[] data1 = new byte[1024];
while (true)
{
int length = readStream.Read(data1, 0, data1.Length);
if (length == 0)
{
Console.WriteLine("读取结束");
break;
}
else
{
writeStream.Write(data1,0,length);
}
}
writeStream.Close();
readStream.Close();
Console.ReadKey();
}
}
}
StreamReader和StreamWriter
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _029_使用StreamReader和StreamWriter读写文本文件 {
class Program {
static void Main(string[] args) {
//1、创建文本文件读取流
StreamReader reader = new StreamReader("TextFile1.txt");
while (true)
{
int res = reader.Read();//读取
if (res == -1)
{
break;
}
else
{
Console.Write((char)res);
}
}
reader.Close();
//2、复制文本,并且写入文本
StreamWriter writer = new StreamWriter("textfile2.txt");//如果文件存在,那么文件会被覆盖
while (true)
{
string message = Console.ReadLine();
if (message == "q")
break;
writer.WriteLine(message);//吸入一个字符串并换行
}
writer.Close();
}
}
}
xml解析
<skills>
<skill>
<id>2</id>
<name lang="cn">天下无双</name>
<damage>123</damage>
</skill>
<skill>
<id>3</id>
<name lang="cn">永恒零度</name>
<damage>90</damage>
</skill>
<skill>
<id>4</id>
<name lang="en">Xxx</name>
<damage>400</damage>
</skill>
</skills>
Json解析
{
"Name":"siki",
"Level":99,
"Age":18,
"SkillList":[
{"id":2,"name":"天下无双","damage":123 },
{"id":3,"name":"天下无贼","damage":21 },
{"id":4,"name":"咫尺天涯","damage":900 }
]
}
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _026_文件操作_查看文件和文件夹信息 { class Program { static void Main(string[] args) { //相对路径:就是找当前程序所在的路径 //FileInfo fileInfo = new FileInfo("TextFile1.txt"); //绝对路径:加上文件完整的路径名 FileInfo fileInfo = new FileInfo(@"C:\Users\Administrator\Desktop\源码\学习csharp编程 高级篇\026-文件操作-查看文件和文件夹信息\bin\Debug\TextFile1.txt"); Console.WriteLine(fileInfo.Exists);//判断该文件是否存在 Console.WriteLine(fileInfo.Name);//文件名.后缀 Console.WriteLine(fileInfo.Directory);//取得文件所在路径 Console.WriteLine(fileInfo.Length);//取得文件大小 Console.WriteLine(fileInfo.IsReadOnly);//文件是否可读 fileInfo.CopyTo("tt.txt");//复制文件 fileInfo.Delete();//删除的是输出路径的文件,工程下的文件还是存在的 Console.WriteLine(fileInfo.Exists);//判断该文件是否存在 FileInfo fileInfo1 = new FileInfo(@"C:\Users\Administrator\Desktop\源码\学习csharp编程 高级篇\026-文件操作-查看文件和文件夹信息\bin\Debug\siki.txt"); if (fileInfo1.Exists == false)//如果当前文件不存在 { fileInfo1.Create();//创建当前文件 } Console.WriteLine(); //文件夹操作(目录操作) (按照完整路径名创建) DirectoryInfo dirInfo = new DirectoryInfo(@"C:\Users\Administrator\Desktop\源码\学习csharp编程 高级篇\026-文件操作-查看文件和文件夹信息\bin\Debug"); Console.WriteLine(dirInfo.Exists); Console.WriteLine(dirInfo.Name); Console.WriteLine(dirInfo.Parent); Console.WriteLine(dirInfo.Root); Console.WriteLine(dirInfo.CreationTime); dirInfo.CreateSubdirectory("siki");//在debug文件夹下创建siki文件夹 //创建test文件夹 DirectoryInfo dirInfo2 = new DirectoryInfo("test"); if (dirInfo2.Exists == false) { dirInfo2.Create();//创建目录 } Console.ReadKey(); } } }
使用File进行文件读取、复制操作
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _027_使用File读写文件 { class Program { static void Main(string[] args) { //1、读取文件,把每一个行文本读取成一个字符串,最后组成一个字符串的数组 string[] strArray = File.ReadAllLines("TextFile1.txt"); foreach (var s in strArray) { Console.WriteLine(s); } Console.WriteLine(); //2、读取文件,生成string string s1 = File.ReadAllText("TextFile1.txt"); Console.WriteLine(s1); Console.WriteLine(); //3、读取图片,并且输出 byte[] byteArray = File.ReadAllBytes("TextFile1.txt"); foreach (var b in byteArray) { Console.Write(b); } //4、复制图片 byte[] data = File.ReadAllBytes("3.LINQ.png"); File.WriteAllBytes("4.png", data); Console.ReadKey(); } } }
FileStream进行文件读取、复制操作
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _028_使用FileStream读写文件 {
class Program {
static void Main(string[] args) {
//1,创建文件流 用来操作文件
FileStream stream = new FileStream("TextFile1.txt", FileMode.Open);
//2, 读取或者写入数据
byte[] data = new byte[1024];//数据容器
while (true)
{
int length = stream.Read(data, 0, data.Length);
if (length == 0)
{
Console.WriteLine("读取结束");
break;
}
for (int i = 0; i < length; i++)
{
Console.Write(data[i] + " ");
}
}
//使用filestream完成文件复制
FileStream readStream = new FileStream("3.LINQ.png",FileMode.Open);
FileStream writeStream = new FileStream("LINQ副本.png",FileMode.Create);
byte[] data1 = new byte[1024];
while (true)
{
int length = readStream.Read(data1, 0, data1.Length);
if (length == 0)
{
Console.WriteLine("读取结束");
break;
}
else
{
writeStream.Write(data1,0,length);
}
}
writeStream.Close();
readStream.Close();
Console.ReadKey();
}
}
}
StreamReader和StreamWriter
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _029_使用StreamReader和StreamWriter读写文本文件 {
class Program {
static void Main(string[] args) {
//1、创建文本文件读取流
StreamReader reader = new StreamReader("TextFile1.txt");
while (true)
{
int res = reader.Read();//读取
if (res == -1)
{
break;
}
else
{
Console.Write((char)res);
}
}
reader.Close();
//2、复制文本,并且写入文本
StreamWriter writer = new StreamWriter("textfile2.txt");//如果文件存在,那么文件会被覆盖
while (true)
{
string message = Console.ReadLine();
if (message == "q")
break;
writer.WriteLine(message);//吸入一个字符串并换行
}
writer.Close();
}
}
}
xml解析
<skills>
<skill>
<id>2</id>
<name lang="cn">天下无双</name>
<damage>123</damage>
</skill>
<skill>
<id>3</id>
<name lang="cn">永恒零度</name>
<damage>90</damage>
</skill>
<skill>
<id>4</id>
<name lang="en">Xxx</name>
<damage>400</damage>
</skill>
</skills>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _030_项目了 { /// <summary> /// 技能类 /// </summary> class Skill { public int Id { get; set; } public string Name { get; set; } public string Lang { get; set; } public int Damage { get; set; } public override string ToString() { return string.Format("Id: {0}, Name: {1}, Lang: {2}, Damage: {3}", Id, Name, Lang, Damage); } } }
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Xml; namespace _030_项目了 { class Program { static void Main(string[] args) { //创建技能信息集合,用来存储所有的技能信息 List<Skill> skillList = new List<Skill>(); // XmlDocment专门用来解析xml文档的 XmlDocument xmlDoc = new XmlDocument(); //选择要加载解析的xml文档的名字 //xmlDoc.Load("skillinfo.txt"); xmlDoc.LoadXml( File.ReadAllText("skillinfo.txt") );//传递一个字符串(xml格式的字符串) //得到根结点 (xmlnode用来代表一个结点) XmlNode rootNode = xmlDoc.FirstChild;//获取第一个结点 //得到根结点下面的子节点的集合 XmlNodeList skillNodeList= rootNode.ChildNodes;//获取当前结点下面的所有子节点 foreach (XmlNode skillNode in skillNodeList) { Skill skill = new Skill(); XmlNodeList fieldNodeList = skillNode.ChildNodes;//获取skill结点下面所有的结点 foreach (XmlNode fieldNode in fieldNodeList) { if (fieldNode.Name == "id")//通过Name属性 可以获取一个结点的名字 { int id = Int32.Parse(fieldNode.InnerText);//获取结点内部的文本 skill.Id = id; }else if (fieldNode.Name == "name") { string name = fieldNode.InnerText; skill.Name = name; skill.Lang = fieldNode.Attributes[0].Value; } else { skill.Damage = Int32.Parse(fieldNode.InnerText); } } skillList.Add(skill); } foreach (Skill skill in skillList) { Console.WriteLine(skill); } Console.ReadKey(); } } }
Json解析
{
"Name":"siki",
"Level":99,
"Age":18,
"SkillList":[
{"id":2,"name":"天下无双","damage":123 },
{"id":3,"name":"天下无贼","damage":21 },
{"id":4,"name":"咫尺天涯","damage":900 }
]
}
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _032_json操作 { class Player { public string Name { get; set; } public int Level { get; set; } public int Age { get; set; } public List<Skill> SkillList { get; set; } public override string ToString() { return string.Format("Name: {0}, Level: {1}, Age: {2}, SkillList: {3}", Name, Level, Age, SkillList); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _032_json操作 { class Skill { public int id; public int damage; public string name; public override string ToString() { return string.Format("Id: {0}, Damage: {1}, Name: {2}", id, damage, name); } } }
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using LitJson; namespace _032_json操作 { class Program { static void Main(string[] args) { //使用litjson进行解析json文本 //两种引入litjson的方法 //1,去litjson的网站下载litjson.dll 然后添加引用 找到dll所在目录 //2,右键引用 打开管理netget程序包,在联机里面搜索litjson 在搜索结果中选择一个 点击安装 List<Skill> skillList = new List<Skill>(); // 1、我们使用jsonMapper去解析json文本 // jsondata代表一个数组或者一个对象,在这里jsonData代表数组 JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json技能信息.txt")); foreach (JsonData temp in jsonData)//在这里temp代表一个对象 { Skill skill = new Skill(); JsonData idValue = temp["id"]; //通过字符串索引器可以取得键值对的值 JsonData nameValue = temp["name"]; JsonData damageValue = temp["damage"]; int id = Int32.Parse(idValue.ToString()); int damage = Int32.Parse(damageValue.ToString()); //Console.WriteLine(id+":"+nameValue.ToString()+":"+damage); skill.id = id; skill.damage = damage; skill.name = nameValue.ToString(); skillList.Add(skill); } foreach (var temp in skillList) { Console.WriteLine(te a435 mp); } Console.WriteLine(); //2、使用泛型去解析json //json里面对象的键必须跟定义的类里面的字段或者属性保持一致 //2.1解析json里面的每一个技能 Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json技能信息.txt")); foreach (var temp in skillArray) { Console.WriteLine(temp); } Console.WriteLine(); //2.2解析json里面的每一个技能 List<Skill> skillList1 = JsonMapper.ToObject<List<Skill>>(File.ReadAllText("json技能信息.txt")); foreach (var temp in skillList1) { Console.WriteLine(temp); } Console.WriteLine(); //2.3解析json里面的每一个选手 Player p = JsonMapper.ToObject<Player>(File.ReadAllText("主角信息.txt")); foreach (var temp in p.SkillList) { Console.WriteLine(temp); } Console.WriteLine(); //2.4将对象解析为json数据 Player p1 = new Player(); p1.Name = "花千骨"; p1.Level = 100; p1.Age = 16; string json =JsonMapper.ToJson(p1); Console.WriteLine(json); Console.ReadKey(); } } }
相关文章推荐
- extjs 3.4 EditorGridPanel里日期控件在后台获取格式为"2015-10-10T00:00:00"的问题解决
- 画一画javascript原型链
- jsp JSTL
- js三级联动
- BlocksIt.js瀑布流插件结合ajax实现无限加载数据
- js对象如何实现数组索引功能并且自定义自己的方法 (4种方法)
- 记录常用js方法
- javascript检测对象类型的方法
- js将时间由long类型转换为string类型
- 使用JavaScript实现回到顶部功能
- 外部的 JavaScript
- JavaScript 运算符
- JavaScript事件模型
- JavaScriptSerializer类序列化日期时需要注意的问题
- JavaScript 错误 - Throw、Try 和 Catch
- js之获取窗口大小和位置信息
- JS 的一些知识点
- Ionic javascript Api | ion-view 视图的生命周期及事件集合
- 项目整理三.excel文件转json
- js的filter的巧用