File.ReadAllBytes返回一个空数组

时间:2014-08-31 13:36:50

标签: c# .net file unity3d byte

我在Unity 3D(.NET 2.0)中用C#编写游戏。要读取外部文件,我使用 File.ReadAllBytes 。但是,今天我遇到了一个问题,其中一个明显不是空文件的文件没有被破坏也无法正确读取 - ReadAllBytes返回一个零元素的字节数组。我正在尝试阅读的文件是一个MP3文件,我看不出它有什么问题。我可以在FMODEx中加载它,我可以用媒体播放器播放它,但ReadAllBytes返回零。这只发生在该特定文件上,但我确信如果它发生,那么可能会有很多其他文件无法读取。

可能导致 File.ReadAllBytes 出现故障的原因是什么?这件事的最佳解决方法是什么? (例如,如果返回一个空数组,则以另一种方式读取该文件。)

添加代码作为海报还不能:

public void LoadFrom(string filePath) 
{
    StopTransfer();
    byte[] bytes = null;
    if (File.Exists(filePath)) 
    {
        path = filePath;
        name = Path.GetFileNameWithoutExtension(filePath);
        extension = Path.GetExtension(filePath);
        bytes = File.ReadAllBytes(filePath);
        if (bytes.Length == 0) bytes = ReadAllBytes(filePath);
        if (bytes.Length == 0) error = "Corrupt file";
        fullFile = bytes;
    } 
    else 
    {
        fullFile = null;
        error = "Not found";
    }
}

0 个答案:

没有答案