我使用FSDataInputStream
来阅读配置文件,并希望在阅读第二个配置文件之前知道我需要close()
inputStream
和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();
读取另一个重复使用inputstream
的文件而不关闭它的文件是否安全?
答案 0 :(得分:1)
是的,可以使用相同的FSDataInputStream
对象来读取多个配置文件。
FSDataInputStream
打开一个stream
来读取指定文件位置的数据,并且在您调用read()
方法时执行实际的阅读操作load
在你的代码中
FSDataInputStream inputStream = fs.open(new Path("file:///path/to/1.conf"));
props1.load(inputStream);
创建了input stream buffer
,props1.load(inputStream)
将read
逐行数据并将其存储在属性props1
中,直到达到文件末尾。因此,inputStream
buffer
中存储的所有行都已被读取且为empty
在你的下一个代码中
inputStream = fs.open(new Path("file:///path/to/2.conf"));
props2.load(inputStream);
同样重复上述内容,但新文件和新properties
object
您可以在代码末尾关闭FSDataInputStream
。你应该一直关闭它。
我希望它清楚