Visual c# 中的 _stat 替代方案

Posted

技术标签:

【中文标题】Visual c# 中的 _stat 替代方案【英文标题】:_stat alternative in visual c# 【发布时间】:2014-03-30 10:10:56 【问题描述】:

我在 VC++ 中有一个 SDK 示例,我正在用 c# 编写代码。在 VC++ 示例中他们使用过

struct  _stat StatBuff;

当我检查 _stat 的定义时,它是

#define _stat  _stat64i32

他们使用 StatBuff 作为

unsigned int BuffSize = StatBuff.st_size + 8;

此代码旨在为浏览的图像文件创建缓冲区,下一行是

ImageBuffer = (BYTE *)malloc( BuffSize );

我想知道如何在 c# 中转换 (StatBuff.st_size),我在互联网上搜索了很多但无法转换这段代码。我可以使用一些替代的 c# 函数吗?

【问题讨论】:

或许你能告诉我们这段代码的目的是什么? #nvoigt 我已经编辑了问题 也许你可以发一个更大的块,因为C#中有简单的图片加载功能,不需要去摆弄低级字节计算。 这可能是一个糟糕的开始代码选择,_stat() 是一个 Unix 函数,它很难映射到 Windows 文件系统。我想图像文件格式也是如此。不过,_stat.st_size 不是问题,它与 FileInfo.Length 相同。而且 malloc() 不应该让你慢下来,它是 new byte[]。 【参考方案1】:

各种_stat 函数是围绕底层 Win32 函数的 C/C++ 库包装器,旨在使从类似 OS 的 Posix 移植更容易。

使用像 +8 这样的偏移量是在假设 _stat 类型的内部布局可能会发生变化。

所有信息都在 .NET FileInfo 类型中可用。

【讨论】:

Richard 我很困惑,因为 _stat 具有诸如缓冲区和路径之类的属性,最终我必须传递给另一个 SDK 函数。我的问题是,要么我应该让我的类具有相同的属性,要么可以直接使用 FileInfo。 @Tanveer 如果没有更详细的代码知识,这是无法回答的。 (1) 了解代码的作用,(2) 使用 .NET 等效项重新编写,您可能会更好。这样的重写将不会是一个语句到一个语句的翻译。

以上是关于Visual c# 中的 _stat 替代方案的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET - Visual Studio 2003 的“继续”的替代方案

Visual Studio 2008 中的 C# 项目中的 C++ 项目参考

Visual Studio 2012(C#)中的可折叠(条件、循环)块[重复]

C# 中可空类型的替代方案

Visual Studio 2010 Express C#中的“导航到”在哪里

Visual Studio 2012 中的可用替代列表