mac下如何改变当前环境目录(程序实现)

    游戏客户端调试的时候很正常,但是双击客户端程序图标直接运行的时候,却因为找不到配置文件而崩溃。

 

    我们在游戏代码中一般使用 fopen("ini/xxx.ini", "r") 这样的形式来获取一个配置文件,这就要求程序的当前环境目录下要有ini这个文件夹。如果我们是通过命令行来运行程序的,那么当前环境目录就是程序所在文件夹,它下面会有ini这个文件夹,没有问题。如果我们是双击程序图标来打开游戏的话,那么当前环境目录会被设置成根目录,根目录下当然没有ini文件夹。

 

   首先要获取程序文件的绝对路径,注意不是getcwd获取的路径,getcwd获取的依然是当前环境目录。我们可以对这个路径进行调整,使其指向我们资源文件的位置。然后使用chdir("xxxx"),以改变当前环境目录。注意,xxxx这个路径要是utf-8编码的(或者说是系统默认编码,linux和mac当然就是utf-8),中文路径的时候尤其要注意。这之后使用getcwd就可以获取正确的当前环境目录了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用Java中的JMX(Java Management Extensions)技术来采集当前环境的设备连接和拓扑信息。 JMX是Java语言的一种技术,可用于监测和管理应用程序、设备、系统和网络。 要使用JMX收集信息,你需要执行以下步骤: 1. 在应用程序中启用JMX功能。这可以通过在程序的启动脚本中添加特定的JMX参数来实现。 2. 使用JMX客户端连接到应用程序并查询相关信息。可以使用工具(例如jconsole)或编写自己的JMX客户端代码来实现。 3. 使用Java代码将收集的信息转换为JSON格式。可以使用第三方库(如Gson)或内置的Java API(例如org.json)来实现。 以下是一个简单的示例代码,展示了如何使用JMX客户端收集信息并将其转换为JSON格式: ``` import java.io.IOException; import java.util.Set; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import com.google.gson.Gson; public class JmxClient { public static void main(String[] args) throws IOException { // Connect to the JMX server JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi"); JMXConnector jmxConnector = JMXConnectorFactory.connect(url); MBeanServerConnection connection = jmxConnector.getMBeanServerConnection(); // Query MBeans ### 回答2: 要实现采集当前环境的设备的连线和拓扑信息并生成树状的JSON代码,可以使用Java编程语言结合一些相关的库和技术。 首先,需要采集当前环境的设备信息。可以使用Java的网络编程库来获取设备的IP地址、MAC地址和其他相关的网络信息。例如,可以使用Java的InetAddress类获取本机和其他设备的IP地址,使用NetworkInterface类获取设备的MAC地址。 接下来,需要获取设备之间的连线信息。可以通过扫描网络中的设备或者使用其他的网络发现技术,例如使用Java的Socket类向其他设备发送请求,然后解析响应来获取设备之间的连接关系。可以使用递归算法来遍历网络中的所有设备,并将连线关系保存在一个数据结构中。 然后,需要将设备的连线和拓扑信息转换为树状结构的JSON代码。可以使用Java的JSON库,例如Jackson或者Gson,将设备和连接关系转换为JSON对象。可以使用Java的Map和List等数据结构来表示设备和连接信息,然后使用JSON库将其序列化为JSON字符串。 最后,可以将生成的JSON代码保存到文件中或者通过网络发送给其他的应用程序进行处理和展示。可以使用Java的文件操作API将JSON字符串写入文件,或者使用Java的网络编程库将其发送给其他设备或应用程序。 综上所述,使用Java编程语言和相关的库和技术可以实现采集当前环境的设备的连线和拓扑信息生成树状的JSON代码。具体的实现过程需要根据实际情况进行调整和完善。 ### 回答3: 要实现采集当前环境的设备的连线和拓扑信息生成树状的JSON代码,可以使用Java的工具类库和数据结构来实现。以下是一个可能的实现思路: 首先,需要使用Java的网络编程功能来获取当前设备的连线信息。可以使用Java的Socket类来建立网络连接并进行数据收发,通过建立TCP连接,获取到网络设备的信息。 然后,可以使用Java的数据结构中的图(Graph)或树(Tree)来表示设备的拓扑关系。可以创建一个设备类(Device),其中包含设备的名称、IP地址等属性,并使用一个集合(如ArrayList)来存储相互连接的设备。 接下来,可以使用递归算法来遍历设备的拓扑关系,生成树状的拓扑信息。从一个根节点开始遍历,递归地访问所有连接设备,并将其添加到相应的父节点下面。 最后,可以使用Java的JSON库(如Jackson、Gson等)来将设备拓扑信息转换为JSON格式的字符串。可以创建一个根节点,将设备类的属性作为JSON对象的键值对,并将连接设备的集合作为子节点添加。再将整个树状结构转换为JSON字符串输出。 通过将上述步骤结合起来,我们就可以实现采集当前环境的设备连线和拓扑信息生成树状的JSON代码,并且使用Java编程语言来进行实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值