覆盖现有文件

时间:2014-04-25 13:57:28

标签: c# file-io

我使用JSON从网上下载文件。我现在想要将文件保存到设备(我已经完成),但每次运行应用程序时,我都会再次保存文件。即使它已经存在。

我如何修改下面的代码,以便在保存位置找到具有相同名称的文件时,不会创建该文件的新副本?

IEnumerator Start ()
{
    WWW urlToLoad = new WWW(url);
    yield return urlToLoad;
    Debug.Log(urlToLoad.text);

    jsonContents = urlToLoad.text;
    var n = JSON.Parse(jsonContents);
    jsonURL = n["data"][0];
    Debug.Log(jsonURL.ToString());


    string[] splitJSONURL = jsonURL.Split('/');
    string bundle = splitJSONURL[splitJSONURL.Length - 1];
    SaveBytesAsFile(Application.persistentDataPath + "/" + bundle, urlToLoad.bytes);

}

void SaveBytesAsFile(string filePath, byte[] array)
{
    print("Saving to: " + filePath + " :: " + array.Length);

    File.WriteAllBytes(filePath, array);
}

2 个答案:

答案 0 :(得分:2)

检查文件是否存在。如果没有,请创建它:

if (!File.Exists(filePath))
{
    File.WriteAllBytes(filePath, array);
}
else
{
    // do some magic, create an other file name or give an error
}

答案 1 :(得分:1)

我倾向于检查文件是否存在,如果是,我将日期附加到文件名,您也可以轻松地跳过编写文件:

// With a new filename:
if (File.Exists(filePath))
{
    File.WriteAllBytes(filepath + "-" + DateTime.Now.ToString("yyyy-MM-dd-hhmm") + ".txt", array);
}

// To skip writing the file all together, follow @PatrickHofman's answer. 

理想情况下,如果要保存所有文件,则文件命名模式应包含此可能性。

如果需要保留所有数据(例如数据库),您可能还需要查看存档过程。这样,当您覆盖文件时就不会丢失任何内容,并且可以在需要时轻松替换数据。