首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以非平台特定的方式创建/填充文件夹(可视目录)?

如何以非平台特定的方式创建/填充文件夹(可视目录)?
EN

Stack Overflow用户
提问于 2011-07-24 07:42:03
回答 2查看 56关注 0票数 1

嘿,所以我想知道像“我的世界”这样的multi-platform游戏是如何能够创建目录的,可以作为文件夹显示,在那里可以存储、保存或其他资源?

如果您知道如何以Boost::Filesystem相关的方式完成此操作,请回答this post。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-24 11:34:58

在“我的世界”中,它使用Java抽象出文件系统处理,这样对CreateDirectory()之类的东西的调用就可以在任何操作系统上工作,而不必重写基本的函数调用。这是因为Java运行在虚拟机( JVM)之上,JVM处理操作系统特定的调用来处理文件系统。这就是Java的优势所在。大多数解释语言(以及及时编写的语言)都以这种方式工作,因为它们可以从程序员那里抽象出操作系统特定的文件系统命令。

尽管如此,对于像C++这样的特定体系结构,问题更加复杂。每个操作系统都可以有一组不同的函数来处理文件和目录操作,对于移植到不同平台的游戏来说,这通常是在执行端口时更改的事情之一。在这种情况下,像Boost这样的库是有用的,因为它们允许与其他语言一样的抽象。如果游戏不使用Boost,那么程序员通常仍然会编写某种库,通常是出于重用和可读性的原因。

票数 3
EN

Stack Overflow用户

发布于 2011-07-24 22:14:31

并不像你想象的那么难。在C或C++中,只要不使用控制台,就需要处理两组函数: Windows函数和POSIX函数。大多数POSIX函数也存在于Windows上。只需几个#ifdef,您就有了一个很好的最小跨平台文件系统层。

如果您想让它变得更简单,请使用Boost::Filesystem。

如果您没有使用C或C++,那么您的编程语言很可能提供了这些抽象的本地语言。

如果您也想覆盖控制台,那么您最多只能为每个控制台提供另一组API。所有这一切真正意味着对控制台有一点额外的#ifdef‘’ing,或者如果您正在使用一种没有对控制台进行适当绑定的语言,则编写这些绑定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6810758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档