C# 如何查找没有文件类型的文件?

C# 如何查找没有文件类型的文件?,c#,C#,我的问题与这个问题相同,但对于c#: 请参阅下面的代码: [HttpGet("{id}")] public ActionResult<byte[]> Get(Guid id) { return System.IO.File.ReadAllBytes("Pictures\\" + id ); } [HttpGet(“{id}”)] 公共操作结果获取(Guid id) { 返回System.IO.File.ReadAllBytes(“Pictures\\”+id); } 文件

我的问题与这个问题相同,但对于c#:

请参阅下面的代码:

[HttpGet("{id}")]
public ActionResult<byte[]> Get(Guid id)
{
    return System.IO.File.ReadAllBytes("Pictures\\" + id );
}
[HttpGet(“{id}”)]
公共操作结果获取(Guid id)
{
返回System.IO.File.ReadAllBytes(“Pictures\\”+id);
}
文件类型(如jpeg、gif等)未知。如何查找没有文件类型的文件

我是否必须坚持所有图像都以特定的文件格式提交

最优雅的方法是什么?

一种简单的方法是读取目录中的文件名,然后读取与您要查找的文件匹配的文件

// You might have to change the location of the directory
var files = Directory.GetFiles(@"Pictures\");

foreach(var file in files)
{
    if(file.Contains(id.ToString()))
    {
         return System.IO.File.ReadAllBytes("Pictures\\"+file);
    }
}

调用
id.ToString()
可能不是您要查找的。您应该根据文件名对此进行适当更改。例如,您可以使用带有连字符的guid
7c7cdab9-0db7-4ad1-93c1-96ddc92aadaa
或不带连字符的guid
44e0391b22bb48018aa6aab517a59238
。您将找到所有相应的格式化程序,以便选择适合您案例的格式化程序

比上述更好的方法是使用允许模式的重载:

var files=Directory.GetFiles(“,$”*{id}*”)
(当然,可以根据需要省略星号)

对于精确的Guid格式,您仍然存在相同的问题,但至少您没有获取目录中的所有文件名


如果您希望目录中有许多文件,那就更好了。

谢谢。你知道一种不幼稚的查找文件的方法吗?欢迎你。不,如果我知道的话,我会分享的。我将其描述为一种幼稚的方法,因为在我看来这绝对不是最好的方法,因为每次需要读取文件时,都必须枚举目录中的所有文件,而您只需要读取一个文件。最后一段感谢+1。你能确认调用id.tostring没有什么问题吗?我的理解是,文件名将只包含连字符。我想我可以将文件存储在服务器上,不带文件扩展名,并且始终提供JPEG。这种方法有缺陷吗?@w0051977不客气。正如您在这里看到的,这个调用以“registry”格式返回带有连字符的guid。