如何为Json文件创建唯一名称

时间:2018-03-28 15:30:40

标签: c# json

我在团结游戏中写了一个Json文件,但是当我在游戏中播放文件" Shader.json"被新数据覆盖。

我想知道如何在文件路径中附加时间戳或增加的数字,以便每次写入数据时都会创建一个新的Json文件。

这是我输出Json数据的代码。 已编辑并正常工作

public class writejson : MonoBehaviour
{

public ShaderValues shader = new ShaderValues("Test123", 2, 155, 100, 30);
JsonData shaderJson;

public static string GetUniqueIdentifier()
{
    return System.Guid.NewGuid().ToString();
}


void Start()
{
    shaderJson = JsonMapper.ToJson(shader);
    Debug.Log(shaderJson);

    File.WriteAllText(Application.dataPath + "/Json/ShaderSettings_" + GetUniqueIdentifier() + ".json", shaderJson.ToString());

}


public class ShaderValues
{

    public string name;
    public int shadertype;
    public int red;
    public int blue;
    public int green;


public ShaderValues(string name, int shadertype, int red, int blue, int green)
{
    this.name = name;
    this.shadertype = shadertype;
    this.red = red;
    this.blue = blue;
    this.green = green;

           }

        }
   } 

1 个答案:

答案 0 :(得分:2)

生成唯一值的简单而安全的方法是使用Guid

File.WriteAllText(Application.dataPath + "/Json/Shader"+ Guid.NewGuid().ToString() +".json", shaderJson.ToString());

NewGuid()方法会生成一个新的唯一值,实际上保证不仅在您的计算机上是唯一的,而且在全世界都是唯一的。

来自Microsoft Docs中的Guid页面:

  

GUID是一个128位整数(16字节),可以在需要唯一标识符的所有计算机和网络中使用。这样的标识符被复制的可能性非常低。

从人的角度来说,这意味着有超过3.4028e + 38个可能的guid值 - 之后是3位,其后有38位数。

这里最大的优点是,即使您运行程序的多个实例,并且每个实例上都有多个线程,每个实例都保存一个文件,生成相同文件名的几率几乎为0(是< / strong>可能,只是非常低的机会)。