如何获取文件大小和文件名以及文件起始地址?

时间:2015-01-22 07:32:33

标签: c++ qt

我使用QFileDialog打开文件并使用QDatastream来读取它。

QString fileName = QFileDialog::getOpenFileName(this, tr("open file"),
                                                    " ",
                                                    tr("Text (*.c);;Bin(*.bin)"));
    QFile f(fileName);
    QDataStream readstream(&f);
    f.open(QIODevice::ReadOnly);

但在那之后,我必须使用用C编写的函数,所以我对how to get the parameters有疑问。

我的C功能是:

Ymodem_Transmit (uint8_t *buf, const uint8_t* sendFileName, uint32_t sizeFile)

1. uint8_t *buf是指向文件起始地址的指针,但我不知道如何从QDataStream获取它。也许我可以将它们读入缓冲区,但我的文件有点大,所以我不想使用大缓冲区。

2. const uint8_t* sendFileName是一个字符串,如何获得? 即使QFileDialog::getOpenFileName给我一个Qstring filename,但我认为它包含文件的路径,而不是文件名。我想要的是一个真正的文件名,我相信一些类功能可以做到这一点,但我可以'找到它。

3. uint32_t sizeFile我可以使用qint64 QFile::​size()来获取它吗?如果我是对的,如何将qint64转移到uint32_t?如果我这样做会这样做:

qint64 filesize=QFile::​size();
(uint32_t)filesize;

1 个答案:

答案 0 :(得分:1)

我强烈建议您不要使用C函数 - QFile本身为访问文件系统中的数据提供了一个非常好的界面。如果您想使用QFIleInfo类和fileName()成员获取不包含路径的文件名。是的,您可以通过这种方式获取文件大小,但要小心 - 如果您的文件大小相当大(大于可以容纳uint32_t),您的值将会溢出。