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
。你应该总是关上它
我希望它清楚谢谢你的解释!如果真的有帮助,也请投票:)谢谢