文件操作fileinfo:
FileInfo fileinfo=new FileInfo("TextFile1.txt") 相对路径:就是找当前程序所在的路径
FileInfo fileinfo=new FileInfo("C:\Users\Visual studio 2017"); 绝对路径:加上文件完整的路径名
fileinfo.Exists; 判断文件是否存在本程序路径下
fileinfo.Name 文件的名字
fileinfo.Directory 文件所在的目录
fileinfo.Length 文件的大小 单位字节
fileinfo.IsReadOnly 是否是只读的
fileinfo.Delete() 删除的是输出路径的文件,工程下的文件还是存在的
fileinfo.CopyTo("xx.txt") 复制文件
fileinfo.Create(); 创建当前文件
fileinfo.MoveTo("siki2.txt"); 重命名操作
文件夹的操作:(DirectoryInfo)
DirectoryInfo dirinfo=new DirectoryInfo("C:\Users\Debuger\bin"); //绝对路径
dirinfo.Exists 文件夹是否存在
dirinfo.Name 文件夹名字
dirinfo.Parent 父目录
dirinfo.root 根目录
dirindo.CreatSubdirectory("siki") 创建一个子目录
dirinfo.Creat() 创建当前文件夹
使用File读写文件:(读写较小的文件)
using System.IO
//文本文档
String[] staArray= File.ReadAllLines("TextFile1.txt"); 把每一行文本读取成一个字符串,最后组成一个字符串数组
String s=File.ReadAllText("TextFile1.txt"); 读取成一个字符串
//非文本文档:
Byte[] byteArray= File.ReadAllBytes("3.LINQ.png"); 读取一个图片
写文件:
File.WriteAllText("text2File.txt","hello 中国"); 将信息写入text2File.txt文件中,若没有这个文件,则在本文档创建一个
File.WriteAllLine("text3File.txt",new string[]{"dasfafad","131545","大红色大神"}); 将字符串数组写到文件中
Byte[] data=File.ReadAllBytes("3.LINQ.jpg"); 读取这个图片
File.WriteAllBytes("4.Linq.jpg",data) 相当于复制这个图片
使用FileStream读写文件:(一般读写较大的,非文本文件)
FileStream readstream=new FileStream("3.LINQ.jpg",FileMode.Open); 打开这个文件
FileStream writestream=new FileStream("Linq副本.jpg",FileMode.Creat); 创建一个文件 将一个图片复制当前文档中
byte[] data=new byte[1024];
while(true)
{
int length=readstream.Read(data,0,data.Length); 读取这个文件
if(length==0)
{
Debug.Log("读取完毕");
break;
}
else
{
writestream.Write(data,0,length); 复制这个文件
}
}
readstream.Close();
writestream.Close();
使用读写文本文件(StreamReader,streamWriter)
StreamReader reader=new StreamReader("TextFile1.text") ; 创建文本文件读取流
while(true)
{
string str=reader.ReadLine(); 读取一行字符串
if(str==null)
{
break; 读取结束
}
else
Debug.Log(str);
}
string str=reader.ReadToEnd(); 读取到文本的结尾(读取文本中所有的字符)
while(true)
{
int res=reader.Write(); 读取一个字符
if(res==-1)
{
break;
}
else
{
Debug.Log((char)res);
}
}
StreamWriter: 文本文件写入流
StreamWriter writer=new StreamWriter("textFile2.txt"); 如果没有这个文件,则创建一个,如果文件存在,那么文件将会被覆盖
while(true)
{
string message=Console.ReadLine();
if(message=="q")
{
break;
}
else
{
writer.Write(message); 写入一个字符串
writer.WriteLine(message); 写入一个字符串并换行
}
}
writer.Close();
xml文档:
<skills>
<skill>
<id>2</id>
<name lang="cn">天下无双</name>
<damage>120</damage>
</skill>
<skill>
<id>3</id>
<name lang="cn">绝对零度</name>
<damage>90</damage>
</skill>
<skill>
<id>4</id>
<name lang="en">Xxxx</name>
<damage>400</damage>
</skill>
</skills>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using System;
public class XMLExrecise1 : MonoBehaviour {
public List<Skill> skillList = new List<Skill>();
void Start ()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("xml技能信息.txt");
XmlNode skillinfoNode= xmlDoc.FirstChild;
XmlNode skillListNode = skillinfoNode.FirstChild;
XmlNodeList skillNodeList= skillListNode.ChildNodes;
foreach(XmlNode skillNode in skillNodeList)
{
Skill skill = new Skill();
XmlElement skillname= skillNode["Name"];
skill.Name = skillname.InnerText;
XmlAttributeCollection col= skillNode.Attributes;
skill.Id = Int32.Parse(col["SkillID"].Value);
skill.EnglishName = col["skillEngName"].Value;
skill.TriggerType = Int32.Parse(col["TriggerType"].Value);
skill.ImageFile = col["ImageFile"].Value;
skill.AvaillableRace = Int32.Parse(col["AvaillableRace"].Value);
}
}
}
public class Skill
{
public int Id { get; set; }
public string Name { get; set; }
public string EnglishName { get; set; }
public int TriggerType { get; set; }
public string ImageFile { get; set; }
public int AvaillableRace { get; set; }
public override string ToString()
{
return Id + Name + EnglishName + TriggerType + ImageFile + AvaillableRace;
}
}
Json:
[
{"id":2,"name":"天下无双","damage":123},
{"id":3,"name":"绝对零度","damage",90},
{"id":4,"name":"咫尺天涯","damage":400}
]
使用litjson进行解析json文本
两种方法引入litjson
1.去litjson的网站下载litjson.dll 然后添加引用 找到dll所在目录
2.右键引用 打开管理netget程序包,在联机里面搜索litjson 在搜索结果中选择一个 进行安装
使用JsonMapper去解析json文本
//jsondata代表一个数组或者一个对象
JsonData jsonData=JsonMapper.ToObject(File.ReadAllText("json技能信息.txt")); //jsonData代表一个数组
foreach(JsonData temp in jsonData) //temp代表一个对象
{
JsonData idvalue= temp["id"] //通过字符串索引器可以取得键值对的值
JsonData namevalue=temp["name"];
JsonData damagvalue=temp["damage"];
int id=Int32.Parse(idvalue.ToString());
int damage=Int32.Parse(damagevalue.ToString());
Debug.Log("id:"+id+"name"+namevalue.ToString()+"damage"+damage);
}
使用泛型解析json
//json里面对象的键必须跟定义的类里面的字段或者属性保持一致
Skill[] skillArray=JsonMapper.ToObject<Skill[]>(File.ReadAllText("json技能信息.txt"));
foreach(Skill temp in skillArray)
{
Debug.Log(temp);
}
List<Skill> skillList=JsonMapper.ToObject<List<Skill>>(File.ReadAllText("json技能信息.txt")); 可以用数组的地方都可以用List代替
创建一个类,这个类中的属性和字段必须和json里头的键保持一致,才能用泛型
将一个对象转化成一个json文档
Player p=new Player();
p.Name="jie";
p.Age=100;
p.Level=99;
string json=JsonMapper.ToJson(p)
Json校验+Json在线编辑器
bejson 搜索
Excel操作:
using System.Data.OleDb;
String fileName="装备信息.xls";
string connectionString="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source=" + fileName + ";"+";Extended Properties=\"Excel8.0;HDR=YES;IMEX=1\"";
//1.创建连接到数据源的对象
OleDbConnection connection = new OleDbConnection(connectionString);
//打开连接
connection.Open();
string sql="select * from [Sheet1$]"; 这个是一个查询命令
OleDbDataAdapter adapter = new OleDbDataAdapter(sql,connection); 做查询
DataSet dataSet = new DataSet(); 用来存放数据 用来存放Data Table
adapter.Fill(dataSet); 表示把查询的结果(datatable)放到(填充)dataset里面
connection.Close(); 释放连接资源
//取得数据
DataTableCollection tableCollection=dataSet.Tables; //获取当前集合中所有的表格
Data Table table = tableCollection[0];因为我们只往dataset里面放置了一张表格,所以这里取得索引为0的表格就是我们刚刚查询的表格
//取得表格中的数据
//取得table中所有的行
DataRowCollection rowCollection = table.Rows; 返回了一个行的集合
//遍历行的集合,取得每一行的datarow对象
foreach(DataRow row in rowCollection)
{
//取得row中前8列的数据,索引0-17
for(int i=0;i<8;i++)
{
Debug.Log(row[i]+" ");
}
}