C# File.ReadAllBytes返回一个空数组

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

我正在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";
    }
}

发布您的代码和文件名,可能是因为文件名不匹配。如果它在移动中,认为文件系统可能像iOS一样区分大小写。我同意下面的答案。如果您在某处捕获异常,则可能是您没有看到异常。如果没有代码或良好的错误报告,很难猜测。@LearnCos2D:windows文件系统不区分大小写。我知道,但op没有指明目标平台。嗨,这不可能是文件名不匹配,因为我正在使用浏览器选择文件。代码如下: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);如果(bytes.Length==0)error=“Corrupt file”;fullFile=bytes;}否则{fullFile=null;error=“Not found”}平台是PC。