gpt4 book ai didi

c++ - 从 HDFS 读取和打印文本文件

转载 作者:可可西里 更新时间:2023-11-01 15:25:22 24 4
gpt4 key购买 nike

我有这个短代码,它使用 libhdfs 从 Hadoop 文件系统 (HDFS) 上的文本文件中读取字节。 .它编译并工作正常。我现在正在尝试更改代码,以便我也可以读取文本文件的内容。

以下是我现在拥有的用于从 HDFS 打印文本文件的代码:

#include "jni.h"
#include "hdfs.h"
#include "string.h"
#include "stdlib.h"

int
main(int argc, char **argv)
{
int MAXBUFLEN = 1024;

hdfsFS fs = hdfsConnect("default", 0);
const char* readPath = "/tmp/testfile.txt";
hdfsFile readFile = hdfsOpenFile(fs, readPath, O_RDONLY, 0, 0, 0);
if(!readFile) {
fprintf(stderr, "Failed to open %s for writing!\n", readPath);
exit(-1);
}
char buffer[MAXBUFLEN+1];

int bytes = hdfsRead(fs, readFile, buffer, strlen(buffer));
buffer[MAXBUFLEN] = '\0';
hdfsCloseFile(fs, readFile);
return 0;
}

最佳答案

你应该这样初始化你的缓冲区:

char buffer[MAXBUFLEN+1] = {};

然后将最大缓冲区长度(不要使用strlen)传递给读取函数:

int bytes = hdfsRead(fs, readFile, buffer, MAXBUFLEN);

不需要这一行:

buffer[MAXBUFLEN] = '\0';

因为缓冲区已正确初始化。然后,您可以将整个缓冲区输出为 C 字符串:

std::cout << buffer << std::endl;

字符串长度,现在,应该等于读取的字节数:

assert(strlen(buffer)==bytes);

关于c++ - 从 HDFS 读取和打印文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48043532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com