Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hadoop FSDataInputStream重用以读取另一个文件_Java_Hadoop - Fatal编程技术网

Java Hadoop FSDataInputStream重用以读取另一个文件

Java Hadoop FSDataInputStream重用以读取另一个文件,java,hadoop,Java,Hadoop,我正在使用FSDataInputStream读取配置文件,想知道在读取第二个配置文件之前是否需要close()输入流和fs: FileSystem fs = FileSystem.get(URI.create("file:///path/to/1.conf"), conf); FSDataInputStream inputStream = fs.open(new Path("file:///path/to/1.conf")); props1.load(inputStream); ... ...

我正在使用
FSDataInputStream
读取配置文件,想知道在读取第二个配置文件之前是否需要
close()
输入流和
fs

FileSystem fs = FileSystem.get(URI.create("file:///path/to/1.conf"), conf);
FSDataInputStream inputStream = fs.open(new Path("file:///path/to/1.conf"));
props1.load(inputStream);
...
...
FileSystem.get(URI.create("file:///path/to/2.conf"), conf);
inputStream = fs.open(new Path("file:///path/to/2.conf"));
props2.load(inputStream);
...
inputStream.close();
fs.close();

使用相同的<代码>输入流<代码>是否可以安全地读取另一个文件而不将其关闭在中间?

< p>是的,可以使用同一个<代码> fsDATAN程序流对象来读取多个配置文件。
FSDataInputStream
打开一个
从给定的文件位置读取数据,当您调用
read()
方法时,实际的读取操作就完成了,就像您的情况是
load

在代码中

FSDataInputStream inputStream = fs.open(new Path("file:///path/to/1.conf"));
props1.load(inputStream);
创建一个
输入流缓冲区
,并且
props1.load(inputStream)
逐行读取
数据,并将其存储在属性
props1
中,直到文件结束。因此,
inputStream
buffer
中存储的所有行都已被读取,并且
为空

在下一个代码中

 inputStream = fs.open(new Path("file:///path/to/2.conf"));
 props2.load(inputStream);
重复上述操作,但使用新文件和新的
属性
对象

您可以在代码末尾关闭
FSDataInputStream
。你应该总是关上它


我希望它清楚

谢谢你的解释!如果真的有帮助,也请投票:)谢谢