CreationTime 创建文件或文件夹的时间
DirectoryName(用于FileInfo) 包含文件夹的完整路径
Parent(用于DirectoryInfo) 指定子目录的父目录
Exists 文件或文件夹是否存在
Extension 文件的扩展名,对于文件夹,它返回空白
FullName 文件或文件夹的完整路径名
LastAccessTime 最后一次访问文件或文件夹的时间
LastWriteTime 最后一个修改文件或文件夹的时间
Name 文件或文件夹的名称
Root(仅用于DirectoryInfo) 路径的根部分
Length(仅用于FileInfo) 返回文件的大小(以字节为单位)
Create() 创建给定名称的文件夹或者空文件,对于FileInfo,该方法会返回一个流对象,以便于写入文件。
Delete() 删除文件或文件夹。对于文件夹有一个可以递归的Delete选项
MoveTo() 移动或重命名文件或文件夹
CopyTo() (只用于FileInfo)复制文件,文件夹没有复制方法,如果想要复制完整的目录树,需要单独复制每个文件和文件夹
GetDirectories() (只适用于DirectoryInfo)返回DirectoryInfo对象数组,该数组表示文件夹中包含的所有文件夹
GetFiles() (只适用于DirectoryInfo)返回FileInfo对象数组,该数组表示文件夹中所有的文件
GetFileSystemInfos() (只适用于DirectoryInfo)返回FileInfo和DirectoryInfo对象,它把文件夹中包含的所有对象表示为一个FileSystemInfo引用数组
namespace _001_文件操作基础
{
internal class Program
{
static void Main(string[] args)
{
//相对路径:就是找当前程序所在的路径
FileInfo fileInfo = new FileInfo("TextFile1.txt");
//绝对路径:加上文件完整的路径名
//FileInfo fileInfo = new FileInfo(@"C:\Users\Administrator\source\repos\001_文件操作基础\bin\Debug\net6.0");
Console.WriteLine(fileInfo.Exists);//判断该文件是否存在
Console.WriteLine(fileInfo.Name);//文件名.后缀
Console.WriteLine(fileInfo.Directory);//取得文件所在路径
Console.WriteLine(fileInfo.Length);
Console.WriteLine(fileInfo.IsReadOnly);
//fileInfo.Delete();//删除的是输出路径的文件,工程下的文件还是存在的
//fileInfo.CopyTo("tt.txt");
FileInfo fileInfo1 = new FileInfo("siki.txt");
if (fileInfo1.Exists == false)//如果当前文件不存在
{
fileInfo1.Create();//创建当前文件
}
fileInfo1.MoveTo("siki2.txt");//重命名操作
//文件夹操作(目录操作) (按照完整路径名创建)
DirectoryInfo dirInfo = new DirectoryInfo(@"C:\Users\Administrator\source\repos\001_文件操作基础\bin\Debug\net6.0");//查看Debug文件夹的信息
Console.WriteLine(dirInfo.Exists);
Console.WriteLine(dirInfo.Name);
Console.WriteLine(dirInfo.Parent);
Console.WriteLine(dirInfo.Root);
Console.WriteLine(dirInfo.CreationTime);
dirInfo.CreateSubdirectory("siki");
DirectoryInfo dirInfo1 = new DirectoryInfo("test");
if (dirInfo1.Exists == false)
{
dirInfo1.Create();//创建目录
}
}
}
}
namespace _001_文件操作基础
{
internal class Program
{
static void Main(string[] args)
{
string[] strArray = File.ReadAllLines("TextFile1.txt");
//读取文件,把每一个行文本读取成一个字符串,最后组成一个字符串的数组
foreach (var str in strArray)
{
Console.WriteLine(str);
}
string s = File.ReadAllText("TextFile1.txt");
Console.WriteLine(s);
//byte[] byteArray = File.ReadAllBytes("3.LINQ.png");
//foreach (var b in byteArray)
//{
// Console.Write(b);
//}
File.WriteAllText("textfile2.txt", "hello sdf中国");
File.WriteAllLines("textfile3.txt",new string[]{" sdfsdflk","213412","流口水的减肥"});
byte[] data = File.ReadAllBytes("3.LINQ.png");
File.WriteAllBytes("4.png", data);
}
}
}
namespace _002_fileStream读写文件
{
internal 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.WriteLine(data[i] + " ");
}
}
//使用filestream完成文件复制
FileStream readStream = new FileStream("新建 Microsoft Excel 工作表.xlsx", FileMode.Open);
FileStream writeStream = new FileStream("新建 Microsoft Excel 工作表fu.xlsx", FileMode.Create);
byte[] data1 = new byte[1024];
while (true)
{
int length = readStream.Read(data1, 0, data.Length);
if (length == 0)
{
Console.WriteLine("读取结束");
break;
}
else
{
writeStream.Write(data1, 0, length);
}
}
writeStream.Close();
readStream.Close();
}
}
}
namespace _003_Streamread_write
{
internal class Program
{
static void Main(string[] args)
{
StreamReader reader = new StreamReader("TextFile1.txt");
while (true)
{
string line = reader.ReadLine();
if (line == null) break;
Console.WriteLine(line);
}
StreamReader reader1 = new StreamReader("TextFile1.txt");
string str = reader1.ReadToEnd();//读取到文本的结尾(读取文本中所有的字符)
Console.WriteLine(str);
reader.Close();
reader1.Close();
//文本文件写入流
StreamWriter writer = new StreamWriter("Textfile2.txt");
while (true)
{
string line = Console.ReadLine();
if (line == "q") break;
//writer.Write(message);//写入一个字符串
writer.WriteLine(line);//写入一个字符串并换行
}
writer.Close();
}
}
}
XML实例文件
#
<skills>
<skill>
<id>2id>
<name lang="cn">天下无双name>
<damage>123damage>
skill>
<skill>
<id>3id>
<name lang="cn">永恒零度name>
<damage>90damage>
skill>
<skill>
<id>4id>
<name lang="en">Xxxname>
<damage>400damage>
skill>
skills>
读取xml文件
//Skill.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _004_XML文件读取
{
internal 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);
}
}
}
//Program.cs
using System.Xml;
namespace _004_XML文件读取
{
internal 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 fileNodeList = skillNode.ChildNodes;//获取skill结点下面所有的结点
foreach (XmlNode fileNode in fileNodeList)
{
if (fileNode.Name == "id")//通过Name属性 可以获取一个结点的名字
{
int id = Int32.Parse(fileNode.InnerText);//获取结点内部的文本
skill.Id = id;
}
else if (fileNode.Name == "name")
{
skill.Name = fileNode.InnerText;
skill.Lang = fileNode.Attributes[0].Value;
}
else
{
skill.Damage = Int32.Parse(fileNode.InnerText);
}
}
skillList.Add(skill);
}
foreach (Skill skill in skillList)
{
Console.WriteLine(skill);
}
}
}
}
示例文件
//xml技能信息.txt
<SkillInfo>
<SkillList>
<Skill
SkillID="20002"
SkillEngName="Smash"
TriggerType="1"
ImageFile="data/gfx/image/gui_icon_skill_000.dds"
AvailableRace="7"
>
<Name>重击Name>
Skill>
<Skill
SkillID="20003"
SkillEngName="Hide"
TriggerType="2"
ImageFile="data/gfx/image/gui_icon_skill_001.dds"
AvailableRace="1"
>
<Name>隐身Name>
Skill>
<Skill
SkillID="20004"
SkillEngName="Ikari"
TriggerType="3"
ImageFile="data/gfx/image/gui_icon_skill_002.dds"
AvailableRace="1"
>
<Name>怒之翼Name>
Skill>
<Skill
SkillID="20005"
SkillEngName="Revenge"
TriggerType="5"
ImageFile="data/gfx/image/gui_icon_skill_003.dds"
AvailableRace="2"
>
<Name>光之复仇Name>
Skill>
SkillList>
SkillInfo>
读取XML技能信息
//Skill.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _005_读取XML技能信息
{
internal class Skill
{
public int Id { get; set; }
public string Name { get; set; }
public string EngName { get; set; }
public int TriggerType { get; set; }
public string ImageFile { get; set; }
public int AvailableRace { get; set; }
public override string ToString()
{
return string.Format("Id: {0}, Name: {1}, EngName: {2}, TriggerType: {3}, ImageFile: {4}, AvailableRace: {5}", Id, Name, EngName, TriggerType, ImageFile, AvailableRace);
}
}
}
//Program.cs
using System.Xml;
namespace _005_读取XML技能信息
{
internal class Program
{
static void Main(string[] args)
{
List<Skill> skillList = new List<Skill>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("xml技能信息.txt");
//XmlNode skillInfoNode = xmlDoc.FirstChild;
//XmlNode skillListNode = skillInfoNode.FirstChild;
XmlNode skillListNode = xmlDoc.FirstChild.FirstChild;
XmlNodeList skillNodeLsit = skillListNode.ChildNodes;
foreach (XmlNode skillNode in skillNodeLsit)
{
Skill skill = new Skill();
skill.Name = skillNode["Name"].InnerText;
//获取该结点属性的集合
XmlAttributeCollection collection = skillNode.Attributes;
//通过字符串索引器 获取一个属性对象
skill.Id = Int32.Parse(collection["SkillID"].Value);
skill.EngName = collection["SkillEngName"].Value;
skill.TriggerType = Int32.Parse(collection["TriggerType"].Value);
skill.ImageFile = collection["ImageFile"].Value;
skill.AvailableRace = Int32.Parse(collection["AvailableRace"].Value);
skillList.Add(skill);
}
foreach (Skill skill in skillList)
{
Console.WriteLine(skill);
}
}
}
}
bejson.com json格式校验、在线编辑等
示例
[
{"id":2,"name":"天下无双","damage":123 },
{"id":3,"name":"天下无贼","damage":21 },
{"id":4,"name":"咫尺天涯","damage":900 }
]
使用Listjosn读取
//Skill.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _006_Josn读取信息
{
internal 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);
}
}
}
//Program.cs
using LitJson;
namespace _006_Josn读取信息
{
internal class Program
{
static void Main(string[] args)
{
//使用litjson进行解析json文本
//两种引入litjson的方法
//1,去litjson的网站下载litjson.dll 然后添加引用 找到dll所在目录
//2,在解决方案资源管理器右键 打开管理netget程序包,在联机里面搜索litjson 在搜索结果中选择一个 点击安装
List<Skill> skillList = new List<Skill>();
//我们使用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(temp);
}
}
}
}
使用泛型去解析json
using LitJson;
namespace _006_Josn读取信息
{
internal class Program
{
static void Main(string[] args)
{
//使用泛型去解析json
//json里面对象的键必须跟定义的类里面的字段或者属性保持一致
Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json技能信息.txt"));
foreach (Skill skill in skillArray)
{
Console.WriteLine(skill);
}
List<Skill> skillList = JsonMapper.ToObject<List<Skill>>(File.ReadAllText("json技能信息.txt"));
foreach (Skill skill in skillList)
{
Console.WriteLine(skill);
}
}
}
}
using System.Data;
using System.Data.OleDb;
namespace _007_读取excel操作
{
internal class Program
{
static void Main(string[] args)
{
string fileName = "装备信息.xls";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
//创建连接到数据源的对象
OleDbConnection connection = new OleDbConnection(connectionString);
//打开连接
connection.Open();
string sql = "select * from [Sheet1$]";//这个是一个查询命令
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);
DataSet dataSet = new DataSet();//用来存放数据 用来存放DataTable
adapter.Fill(dataSet);//表示把查询的结果(datatable)放到(填充)dataset里面
connection.Close();//释放连接资源
//取得数据
DataTableCollection tableCollection = dataSet.Tables;//获取当前集合中所有的表格
DataTable table = tableCollection[0];//因为我们只往dataset里面放置了一张表格,所以这里取得索引为0的表格就是我们刚刚查询到的表格
//取得表格中的数据
//取得table中所有的行
DataRowCollection rowCollection = table.Rows;//返回了一个行的集合
//遍历行的集合,取得每一个行的datarow对象
foreach (DataRow row in rowCollection)
{
//取得row中前8列的数据 索引0-7
for (int i = 0; i < 8; i++)
{
Console.Write(row[i] + " ");
}
Console.WriteLine();
}
}
}
}
如果提示没有System.Data.OleDb,则在netget程序包中下载。
如果报错“Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine”,解决方法有两个:
1.安装64位office2010;2.把程序的目标平台改为x86而不是Any Cpu,因为x86的程序可以同时在32位和64位上运行,而x64的程序只能在64位的程序上运行。