C# 如何检查资产文件是YAML格式还是二进制格式?我是不是换了';直接使用什么格式?
出于某种原因,我需要编辑xxx.preafb文件,但UnityC# 如何检查资产文件是YAML格式还是二进制格式?我是不是换了';直接使用什么格式?,c#,unity3d,yaml,C#,Unity3d,Yaml,出于某种原因,我需要编辑xxx.preafb文件,但Unity.prefact文件有两种格式,二进制或YAML 那么,我如何才能检测到xxx.prefact是一种YAML格式或binary。如果我检测到这个文件是二进制格式的,我怎么能把它切换到YAML。 我知道编辑器>资产序列化>模式它可以格式化项目的所有资产,但它改变太多…由@braincoi建议,只需检查第一行解决方案 static bool IsYAML(string path) { if(!File.Exist
.prefact
文件有两种格式,二进制或YAML
那么,我如何才能检测到xxx.prefact
是一种YAML
格式或binary
。如果我检测到这个文件是二进制格式的,我怎么能把它切换到YAML
。
我知道编辑器>资产序列化>模式它可以格式化项目的所有资产,但它改变太多…由@braincoi建议,只需检查第一行解决方案
static bool IsYAML(string path)
{
if(!File.Exists(path))
{
return false;
}
using (StreamReader sr = new StreamReader(path))
{
if (sr.Peek() >= 0)
{
string header = sr.ReadLine();
return header.Contains("%YAML 1.1");
}
else
{
return false;
}
}
}
使用按YAML格式序列化的预置如何,当您打开“YAML”文件时,它的头类似于“%YAML 1.1”,所以如果“*.prefact”文件没有yaml头,则可以将其转换为二进制文件,否则在读取预制文件的第一行时,它将是yaml fileSo,并且包含“%yaml x.x”,否则它将是yaml格式binary@BrianChoi好主意!例如,如果存在尾随的
\n
或\r\n
。。。也许您应该使用返回头.Contains(“%YAML 1.1”)代码>相反,甚至var match=Regex.match(标题“^%YAML\d\。\d”);回归比赛。成功代码>或类似的东西