文件操作如何在C ++中工作,因为它们与Java不同?

时间:2013-02-12 14:56:15

标签: java c++ file methods

我是一名Java开发人员,因此在尝试操作文件时,您需要实例化该类的对象File。默认情况下,该对象将具有getAbsoluteFile()

等方法

但是,在C ++中,根据this,您使用了一个名为FILE的类型,该类型在stdio.h头文件中定义。既然它不是一个对象而是一个类型,它就没有方法,所以如何操作它 - 特别是如何重命名一个文件?

如果一个对象在C ++中有不同于Java的对象(从File场景来看,它看起来有所不同),那么等效于什么呢?

3 个答案:

答案 0 :(得分:3)

FILE来自C标准库,包含在C ++中以实现向后兼容性。 C不提供对OOP的支持,因此根本没有方法。您可以使用免费功能在FILE上操作。

如果查看您链接的网站上的侧边栏,您会看到cstdio标题中的功能列表。名称以f开头的大多数函数都以FILE*作为第一个参数。要重命名文件,您可以使用rename;它不需要FILE*,它需要两条路径(char*)。

执行文件I / O的C ++方式越多,就越使用streams

答案 1 :(得分:2)

你正在比较两件不同的事情。

在Java中,File是描述文件系统中的事物的对象,并且要更改/添加文件中的数据,您必须从文件中创建流。

In C FILE是打开文件的句柄,用于更改文件中的数据。在C ++中,您应该使用IOStreams。 C和C ++标准没有相当于Java文件的neaerest等价物是Boost Filesystem library

答案 2 :(得分:0)

您不重命名文件,重命名文件。有一个名为rename的函数可以重命名文件。它不对某个对象进行操作,因为C ++从没有对象的C继承它。它只是一个自由函数,它将旧名称和新名称作为参数。

#include <stdio.h>
rename("oldFileName.txt", "newFileName.txt");